• Thế giới của tôi
  • Công nghệ
  • Nghệ thuật
  • Giải trí
  • Chế tạo Diy
  • Video
  • Phòng trưng bày
  • Quảng cáo
Thế giới của tôi
  • Trang chủ
  • Công nghệ

    Bán hàng online hiệu quả qua Instagram

    Hướng dẫn trỏ tên miền Namesilo về VPS Vultr

    Trang web tạo mật khẩu ngẫu nhiên cực hay

    Hướng dẫn bật nén Gzip trong Nginx cực đơn giản

    Cấu hình plugin Wp Rocket hay

    Hướng dẫn trỏ tên miền Name về VPS Vultr

    Tên miền

    Bật tính năng của ảnh trong wordpress 3.0

    Tầm quan trọng hình ảnh sản phẩm trong bán hàng online

  • Nghệ thuật
  • Giải trí
  • Chế tạo Diy
  • Video
  • Phòng trưng bày
No Result
View All Result
  • Trang chủ
  • Công nghệ

    Bán hàng online hiệu quả qua Instagram

    Hướng dẫn trỏ tên miền Namesilo về VPS Vultr

    Trang web tạo mật khẩu ngẫu nhiên cực hay

    Hướng dẫn bật nén Gzip trong Nginx cực đơn giản

    Cấu hình plugin Wp Rocket hay

    Hướng dẫn trỏ tên miền Name về VPS Vultr

    Tên miền

    Bật tính năng của ảnh trong wordpress 3.0

    Tầm quan trọng hình ảnh sản phẩm trong bán hàng online

  • Nghệ thuật
  • Giải trí
  • Chế tạo Diy
  • Video
  • Phòng trưng bày
No Result
View All Result
Thế Giới Của Tôi
No Result
View All Result
Home Wordpress

Cách làm sạch wp_attachment_metadata sau khi xóa ảnh

Mai Linh by Mai Linh
2 Tháng Tư, 2022
3 min read
0
Share on FacebookShare on Twitter

Xem nhanh tại đây.

  1. Cách làm

Trong quá trình tối ưu hóa website thì việc làm sạch các postmeta, các thẻ metadata là điều mà bắt buộc ai cũng phải làm. Tuy nhiên việc này đòi hỏi bạn phải biết về kĩ thuật cũng như phải thực hiện backup trước khi làm các công việc này.

  1. Cách làm

  2. Đoạn function dưới đây (Mình sưu tầm) sẽ giúp cho các bạn có thể làm sạch các thẻ wp_attachment_metadata sau khi xóa 1 bức ảnh nào đó trong thư viện ảnh. Việc này sẽ giúp cho các bạn có thể tối ưu được database rất nhiều, gián tiếp giúp website có thể load nhanh hơn (Vì query trong bảng nhanh hơn).

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    function isa_cleanup_attachment_metadata(){
        if ( get_option( 'my_run_only_once_1' ) != 'completed' ) {
        
            $upload_dir   = wp_upload_dir();
            $upload_basedir = $upload_dir['basedir'];
            $attachment_post_ids = array();
      
            // get all attachment ids for any _wp_attachment_metadata that exists in the wp_postmeta table
              
            // @todo edit database details:
      
            $mysqli = new mysqli('DB_HOST', 'DB_USER', 'DB_USER_PASSWORD', 'DATABASE_NAME');
      
            if( ! $res = $mysqli->query( "SELECT * FROM wp_postmeta WHERE meta_key = '_wp_attachment_metadata'" ) ) {
                error_log($mysqli->error);
            } else {
                while ($row = $res->fetch_assoc()) {
                    $attachment_post_ids[] = $row['post_id'];
                }
                $res->close();
            }
            $mysqli->close();
      
            foreach( $attachment_post_ids as $attachment_id ) {
        
                $data = wp_get_attachment_metadata( $attachment_id );
      
                $original_file_name = $data['file'] ?? '';
      
                $new_data = $data;
      
                // get all filenames from the data
      
                $all_sizes_filenames = wp_list_pluck( $data['sizes'], 'file' );
      
                foreach( $all_sizes_filenames as $size => $filename ) {
      
                $delete_flag = true;
                    $update_flag = false;
      
                    // check that each one doesn't exist, if it does, then don't delete the whole attachment, just update it
      
                    // get month/year for filename
                    $p = strrpos($original_file_name, '/');
                    $path = ($p !== false) ? substr($original_file_name, 0, $p+1) : '';
          
                    if ( file_exists( $upload_basedir . '/' . $path . $filename ) ){
      
                        $delete_flag = false;
      
                    } else {
      
                        error_log($path . $filename .' DOES NOT EXIST');
      
                        unset( $new_data['sizes'][ $size ] );// remove that size from the array
      
                        $update_flag = true;
      
                    }
                  
                }
        
                // if there's no original file, it is not an image, so don't delete the attachment, just update it to remove the sizes
        
                if ( $original_file_name && $delete_flag ) {
      
                    // none of the sized images exist, now check if original file exists
      
                    if ( ! file_exists( $upload_basedir . '/' . $original_file_name ) ) {
                  
                        error_log('DELETING attachment meta id ' . $attachment_id . ' :');
                        error_log(print_r($data, true));
      
                        wp_delete_attachment( $attachment_id );
      
                    }
                }
                  
                if ($update_flag) {
      
                    if ( count( $new_data ) === 1 && empty( $new_data['sizes'] ) ) {
                        $new_data = array();// to make sure empty _wp_attachment_metadata is deleted
                    }
      
                    error_log('UPDATING attachment meta id ' . $attachment_id . ' :');
                    error_log(print_r($new_data, true));
      
                    wp_update_attachment_metadata( $attachment_id, $new_data );
        
                }
      
      
            }// ends foreach attachment
      
      
            update_option( 'my_run_only_once_1', 'completed' );
          
      
        }// end run only once
      
    }
      
    add_action('admin_init', 'isa_cleanup_attachment_metadata');

    Dán code vào file functions.php

    Lam Sach Wp Attachment Metadata Sau Khi Xoa Anh
    Lam Sach Wp Attachment Metadata Sau Khi Xoa Anh

    Các bạn chú ý điền các thông tin database của mình để function thực hiện lệnh xóa các thẻ này nhé.

    Tìm và thay thế các đoạn sau

    1
    2
    3
    4
    DB_HOST
    DB_USER
    DB_USER_PASSWORD
    DATABASE_NAME

    Hàm này chỉ chạy 1 lần thôi nên sau khi lưu và f5 tầm 10 lần thì bạn hoàn toàn có thể xóa code đi nhé.

Và lưu ý hãy backup website trước khi thực hiện để tránh xảy ra lỗi đáng tiếc nhé. Chúc các bạn thành công

Previous Post

Hướng dẫn làm box call to action đẹp

Next Post

Hướng dẫn sử dụng và fake đánh giá với plugin kk ratings

Mai Linh

Mai Linh

chuyên wordpress, function, php, code, ...

Next Post

Hướng dẫn sử dụng và fake đánh giá với plugin kk ratings

No Result
View All Result

Bài viết mới

  • Một mẫu slider đẹp
  • Cách tạo vị trí menu wordpress
  • Khai báo custom post type trong wordpress
  • Sửa lỗi Because app requires SDK version >=2.15.1 <3.0.0 version solving failed
  • Cách đặt nhân vật tiếng trung phồn thể cho game Jx3 Quốc tế

Phản hồi gần đây

    Chuyên mục

    • Bảo mật website
    • Bẻ khóa theme plugin
    • Cắt giấy
    • Chụp ảnh
    • Chụp ảnh sản phẩm
    • Code tiện ích cho website
    • Code trang trí mở rộng
    • Công cụ Tools
    • Công nghệ
    • CSS
    • Digital Marketing
    • Function
    • Game Jx2
    • Game Jx3
    • Game Online
    • Gian hàng online
    • Hosting
    • HTML
    • Instagram
    • Kirigami
    • Kirigami 0 độ
    • Kirigami 180 độ
    • Kirigami 360 độ
    • Kirigami 90 độ
    • Mã độc hại website
    • Marketing Online
    • Máy chủ ảo VPS
    • Origami
    • Paper Craft
    • Phần mềm máy tính cơ bản
    • Php
    • Quilling
    • SEO
    • SEO Offpage
    • SEO Onpage
    • Share theme plugin
    • Shopee
    • Sửa ảnh
    • Tăng doanh thu bán hàng
    • Tên miền
    • Thông tin thế giới của tôi
    • Tối ưu tốc độ web
    • Windows
    • Wordpress

    Recent News

    Một mẫu slider đẹp

    29 Tháng Sáu, 2023

    Cách tạo vị trí menu wordpress

    20 Tháng Tư, 2023
    • Giới thiệu
    • Quảng cáo
    • Bảo mật
    • Liên hệ

    © 2019 Thế Giới Của Tôi - Thiết kế & xây dựng bởi Ngôi Nhà Web.vn.

    No Result
    View All Result
    • Thế giới của tôi
    • Công nghệ
    • Nghệ thuật
    • Giải trí
    • Chế tạo Diy
    • Video
    • Phòng trưng bày
    • Quảng cáo

    © 2019 Thế Giới Của Tôi - Thiết kế & xây dựng bởi Ngôi Nhà Web.vn.