Tự Động Cập Nhật Hình Đại Diện Cho Bài Viết Không Có Thumbnail Trong WordPress
09/12/2024 50
Hình đại diện (thumbnail) là một yếu tố quan trọng giúp bài viết trên WordPress thu hút sự chú ý của người đọc. Tuy nhiên, trong nhiều trường hợp, các bài viết có thể bị thiếu hình đại diện, khiến giao diện website kém chuyên nghiệp. Để giải quyết vấn đề này, bạn có thể sử dụng hàm capnhathinhdaidien được thiết kế để tự động cập nhật hình đại diện từ hình ảnh đầu tiên trong nội dung bài viết.
Tính năng chính của hàm
- Quét toàn bộ bài viết: Hàm tìm kiếm tất cả các bài viết có trạng thái publish và không có hình đại diện.
- Tìm kiếm hình ảnh đầu tiên: Hàm quét nội dung bài viết để tìm hình ảnh đầu tiên.
- Tải hình ảnh lên thư viện Media: Hình ảnh được tự động tải lên thư viện Media của WordPress.
- Gán làm hình đại diện: Hình ảnh được gán làm thumbnail cho bài viết tương ứng.
Lợi ích khi sử dụng hàm
- Tiết kiệm thời gian: Thay vì cập nhật thủ công từng bài viết, hàm này tự động thực hiện toàn bộ quy trình.
- Cải thiện giao diện website: Bảo đảm rằng mọi bài viết đều có hình đại diện, tăng tính thẩm mỹ và chuyên nghiệp.
- Tối ưu SEO: Hình đại diện giúp tăng tỷ lệ click vào bài viết khi hiển thị trên công cụ tìm kiếm và mạng xã hội.
Cách sử dụng hàm
- Chèn hàm vào tệp functions.php: Copy đoạn mã hàm trên và dán vào tệp functions.php của theme bạn đang sử dụng.
- Kích hoạt hàm qua action init: Hàm tự động chạy khi website tải.
function capnhathinhdaidien() {
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => '_thumbnail_id',
'compare' => 'NOT EXISTS',
),
),
);
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
$post_id = get_the_ID();
$content = get_the_content();
preg_match_all('/<img[^>]+src="([^">]+)"/i', $content, $matches);
if (!empty($matches[1][0])) {
$image_url = $matches[1][0];
$upload_dir = wp_upload_dir();
$image_data = file_get_contents($image_url);
$filename = basename($image_url);
if ($image_data) {
$file = $upload_dir['path'] . '/' . $filename;
file_put_contents($file, $image_data);
$wp_filetype = wp_check_filetype($filename, null);
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => sanitize_file_name($filename),
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment($attachment, $file, $post_id);
require_once ABSPATH . 'wp-admin/includes/image.php';
$attach_data = wp_generate_attachment_metadata($attach_id, $file);
wp_update_attachment_metadata($attach_id, $attach_data);
set_post_thumbnail($post_id, $attach_id);
}
}
}
wp_reset_postdata();
}
}
add_action('init', 'capnhathinhdaidien');
Lưu ý
- Đảm bảo rằng hosting có đủ tài nguyên để xử lý các bài viết có số lượng lớn hình ảnh.
- Kiểm tra xem hình ảnh từ bài viết có sẵn sàng để tải về không (tránh lỗi do link ảnh không hợp lệ).
- Backup website trước khi thực hiện để tránh rủi ro các bạn nhé
- Nếu code không chạy thì hãy liên hệ mình zalo 0988 569 505 nhé!