Để tự động thiết lập ảnh đại diện cho bài viết trong WordPress từ một ảnh trong nội dung bài viết, bạn có thể sử dụng đoạn mã sau đây trong file functions.php của theme. Mã này sẽ tìm ảnh đầu tiên trong bài viết và thiết lập nó làm ảnh đại diện.
Thực hiện theo các bước dưới đây:
- Mở file
functions.php: Vàowp-content/themes/your-theme/functions.php. - Thêm mã sau vào cuối file
functions.php:
function set_featured_image_from_content($post_id) {
// Kiểm tra xem post có phải là bài viết không
if ('post' != get_post_type($post_id)) return;
// Lấy nội dung bài viết
$content = get_post_field('post_content', $post_id);
// Tìm ảnh đầu tiên trong bài viết
preg_match_all('/<img[^>]+src=["\']([^"\']+)["\']/i', $content, $matches);
if (isset($matches[1][0])) {
$image_url = $matches[1][0]; // Đường dẫn của ảnh đầu tiên
// Kiểm tra xem ảnh đã được tải lên thư viện Media chưa
$attachment_id = attachment_url_to_postid($image_url);
// Nếu ảnh chưa có trong thư viện, tải lên và thiết lập ảnh đại diện
if ($attachment_id) {
set_post_thumbnail($post_id, $attachment_id);
}
}
}
// Hook vào sự kiện khi lưu bài viết
add_action('save_post', 'set_featured_image_from_content');
- Giải thích:
- Mã trên sẽ kiểm tra nội dung bài viết mỗi khi bài viết được lưu và tìm ảnh đầu tiên trong nội dung.
- Nếu ảnh đó đã có trong thư viện Media của WordPress, nó sẽ được thiết lập làm ảnh đại diện cho bài viết.
- Mã này chỉ hoạt động với bài viết (post), nếu bạn muốn áp dụng cho các loại bài viết khác, bạn có thể điều chỉnh trong phần điều kiện
if ('post' != get_post_type($post_id)).
- Lưu lại file
functions.phpvà thử cập nhật một bài viết mới. Nếu có ảnh trong bài viết, ảnh đó sẽ tự động trở thành ảnh đại diện.

