• 🌐 DDNS Miễn Phí Giải Pháp Cho IP Động

    Vietnam DNS (DDNS) là giải pháp tối ưu cho việc quản lý thiết bị từ xa, cho phép duy trì kết nối ổn định mà không cần địa chỉ IP tĩnh. Với khả năng truy cập nhanh chóng, linh hoạt và bảo mật vượt trội, DDNS mang đến sự thuận tiện và hiệu quả cao cho người sử dụng, giúp quản lý hệ thống từ mọi địa điểm, mọi thời điểm. Hoạt động ổn định trên đa dạng thiết bị như camera, máy chủ, router và nhiều thiết bị khác, DDNS đáp ứng linh hoạt nhu cầu của cả cá nhân và doanh nghiệp. Đặc biệt, giải pháp này hoàn toàn miễn phí, đơn giản trong triển khai và sử dụng.

    Tính Năng Nổi Bật

    🌐

    Kết nối từ xa an toàn

    Truy cập thiết bị mọi lúc mọi nơi với mã hóa hiện đại.

    Cập nhật IP nhanh chóng

    Tự động cập nhật IP động chỉ trong vài giây.

    🔒

    Bảo mật tuyệt đối

    Dữ liệu được bảo vệ bởi mã hóa tiên tiến.

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

TigerDao

Administrator
Thành viên BQT
5/5 - (41 bình chọn)

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.

Đ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).



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

file-functions.jpg

Chèn code vào file functions.php

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



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

The post Cách làm sạch wp_attachment_metadata sau khi xóa ảnh appeared first on Pttuan410 Blog's.
The post Cách làm sạch wp_attachment_metadata sau khi xóa ảnh appeared first on Pttuan410 Blog's.

dangtinvantai.com Diễn đàn Rao Vặt - Quảng Cáo miễn phí, nơi đăng tin tìm việc, tìm người, rao bán các loại sản phẩm hiệu quả và nhanh chóng.
 

Similar threads

Top