Bạn nên cài đặt bộ plugin Performance Lab và trong đó có 1 plugin chuyển đổi image thành Webp hay Avif plugin đó có tên là: Modern Image Formats khi active plugin thì bạn vào phần:

Settings > Media, tại mục Image out format: bạn chọn WebP or AVIF

Screenshot-from-2025-07-10-18-17-05

Tuy nhiên khi dùng plugin yoatSEO thì phần thẻ og:image cũng sẽ sử dụng định dạng webp, điều này dẫn đến việc khi chia sẻ bài viết qua facebook, zalo… sẽ bị lỗi ảnh, đoạn code sau sẽ khắc phục vấn đề này:

Screenshot from 2025-07-10 18-24-37

Trong file functions.php, bạn thêm đoạn mã sau vào cuối file:

add_filter( 'wpseo_frontend_presenter_classes', 'custom_yoast_og_image_presenter', 10, 1 );
function custom_yoast_og_image_presenter( $presenters ) {
    require_once get_stylesheet_directory() . '/class-custom-og-image-presenter.php';
    foreach ( $presenters as $key => $presenter ) {
        if ( $presenter === \Yoast\WP\SEO\Presenters\Open_Graph\Image_Presenter::class ) {
            $presenters[$key] = \MyTheme\Yoast\Custom_OG_Image_Presenter::class;
        }
    }
    return $presenters;
}

Trong thư mục theme bạn hãy tạo thêm file có tên class-custom-og-image-presenter.php và dán vào đoạn mã bên dưới:

<?php
namespace MyTheme\Yoast;

use Yoast\WP\SEO\Presenters\Open_Graph\Image_Presenter;

class Custom_OG_Image_Presenter extends Image_Presenter {

    public function present() {
        $images = $this->get();

    if ( empty( $images ) ) {
      return '';
    }  
              
        if ( is_singular( 'product' ) && has_post_thumbnail() ) {
            $image = $images[0]['url'];
            if ( !empty( $image ) ) {
                $attachment_id = get_post_thumbnail_id();

                $metadata = wp_get_attachment_metadata( $attachment_id ); 

                if ( isset( $metadata['original_image'] ) && is_string( $metadata['original_image'] ) && '' !== $metadata['original_image'] ) {
                    $image = str_replace( basename( $image ), $metadata['original_image'], $image );
                    return '<meta property="og:image" content="' . esc_url( $image ) . '" />';
                }
            }
        }

        // fallback: giữ nguyên của Yoast
        return parent::present();
    }
}

Sau khi thêm đoạn code trên thì bạn kiểm tra lại thẻ og:image đã được cập nhật hay chưa nếu đã cập nhật về định dạng ban đầu bạn tải lên là đã đúng!

 

 

Bài viết liên quan

post-no-image

Trang website có nhiều hiệu ứng hay đẹp tham khảo

post-no-image

Chia nhỏ task cron tự động

post-no-image

Sửa lỗi phân trang khi custom query trong WP Query

post-no-image

Hàm preg_replace_callback() là gì? và ứng dụng trong WordPress

post-no-image

Xử lý change status order Woocommerce khi refund từ Paypal

post-no-image

Hướng dẫn build lại ảnh hoặc media tải lên trong WordPress