[SEO] Khắc phục lỗi Google không index tốt với các sản phẩm không có giá trong Woocomerce

seo price woocomerce 1 - ThemeVareno.com

Bạn làm trang bán hàng bằng Woocomerce trong WordPress, bạn đăng các sản phẩm làm demo hoặc các sản phẩm không có giá, nhưng khi bản kiểm tra xem sản phẩm mình đã đăng chưa được google index làm ảnh hưởng đến trang Seo website của bạn
Nếu bạn gặp trường hợp như vậy hãy kiểm tra ngay và hy vọng bài viết chia sẻ này có thể giúp bạn khắc phục lỗi

Tại sao thiếu giá trong sản phẩm lại ảnh hưởng đến Google Index?

Google muốn cung cấp thông tin đầy đủ nhất cho người dùng ngay trên kết quả tìm kiếm. Khi bạn dùng WooCommerce, hệ thống tự động thêm mã Schema Product.

  • Lỗi Schema: Nếu không có giá, Google Search Console sẽ báo lỗi đỏ (Critical Error) ở trường price hoặc offers.
  • Hệ quả: Google vẫn có thể index, nhưng họ sẽ không ưu tiên, thời gian dài có thể không index trang sản phẩm mới bạn đăng nữa, ảnh hưởng đến Seo của trang web. Trong một số trường hợp thuật toán thắt chặt, các trang bị lỗi dữ liệu cấu trúc nặng hoặc nội dung quá sơ sài (chỉ có ảnh và tiêu đề, không có giá/mô tả) có thể bị coi là “nội dung mỏng” và không được lập chỉ mục.

Kiểm tra Google Search Console báo lỗi đỏ như hình là 43 trang bị ảnh hưởng vì sản phẩm không báo giá

seo price woocomerce 1 - ThemeVareno.com

seo price woocomerce 2 - ThemeVareno.com
Thông báo lỗi của Google

Cách Khắc phục lỗi Google không index tốt với các sản phẩm không có giá trong Woocomerce

1. Đối với sản phẩm CÓ giá

Đoạn code sẽ không làm gì cả.

  • Trong code có dòng kiểm tra: if ( ! isset( $entity[‘offers’] ) ).
  • Nếu sản phẩm đã có giá, WooCommerce và Rank Math sẽ tự động tạo trường offers. Khi đó, điều kiện này không thỏa mãn, và đoạn code sẽ bỏ qua, giữ nguyên giá gốc của bạn để hiển thị lên Google.

2. Đối với sản phẩm KHÔNG có giá (Liên hệ)

Đoạn code sẽ tự động điền giá trị giả định.

  • Khi không có giá, Rank Math sẽ để trống phần offers. Đoạn code sẽ nhảy vào và điền giá bằng 0 cùng đơn vị tiền tệ VND.

  • Mục đích: Giúp Google Search Console không còn báo lỗi đỏ (Error), chuyển nó về trạng thái hợp lệ hoặc chỉ là cảnh báo vàng (Warning). Điều này giúp sản phẩm dễ được index hơn.

Cách thực hiện Xử lý lỗi thiếu giá (Price): Vì bạn không để giá, Google Search Console sẽ báo lỗi đỏ. Bạn hãy chèn đoạn code sau vào file functions.php của Theme (hoặc dùng plugin Code Snippets) để báo với Google rằng sản phẩm này hiện tại không có sẵn giá, giúp tránh lỗi nghiêm trọng:

Sử dụng cho website sử dụng Plugin Rank Math SEO
Cách làm chèn đoạn code sau vào filefunctions.php của Theme (hoặc dùng plugin Code Snippets)

add_filter( 'rank_math/snippet/rich_snippet_product_entity', function( $entity ) {
    // Lấy đối tượng sản phẩm hiện tại
    global $product;
    if ( ! is_object( $product ) ) return $entity;

    // Kiểm tra nếu sản phẩm không có giá
    if ( '' === $product->get_price() ) {
        $entity['offers'] = [
            '@type'         => 'Offer',
            'price'         => '0', // Hoặc để trống nếu muốn báo OutOfStock
            'priceCurrency' => 'VND',
            'availability'  => 'https://schema.org/PreOrder', // Trạng thái đặt hàng trước/liên hệ
            'url'           => get_permalink( $product->get_id() ),
        ];
    }
    // Nếu có giá, Rank Math đã tự xử lý, ta không cần can thiệp thêm
    
    return $entity;
});

Sử dụng cho website sử dụng Plugin Yoast SEO
Cách làm chèn đoạn code sau vào filefunctions.php của Theme (hoặc dùng plugin Code Snippets)

/**
 * Chỉnh sửa Schema Product của Yoast SEO cho sản phẩm không có giá
 */
add_filter( 'wpseo_schema_product', function( $data ) {
    // Lấy đối tượng sản phẩm hiện tại
    global $product;

    // Kiểm tra nếu không phải trang sản phẩm hoặc không có đối tượng $product
    if ( ! is_product() || ! is_object( $product ) ) {
        return $data;
    }

    // Kiểm tra nếu sản phẩm không có giá (giá trống)
    if ( '' === $product->get_price() ) {
        // Tạo cấu trúc Offer cho sản phẩm không giá
        $data['offers'] = [
            '@type'         => 'Offer',
            'price'         => '0',
            'priceCurrency' => 'VND',
            'availability'  => 'https://schema.org/PreOrder', // Hiển thị dưới dạng đặt hàng trước/liên hệ
            'url'           => get_permalink( $product->get_id() ),
            'description'   => 'Liên hệ để biết giá tốt nhất',
            'seller'        => [
                '@type' => 'Organization',
                'name'  => get_bloginfo( 'name' )
            ]
        ];
    }

    return $data;
});
  • Tính tương thích: Yoast SEO quản lý Schema rất chặt chẽ theo từng mảng (array). Đoạn code trên sẽ ghi đè vào phần offers chỉ khi sản phẩm của bạn trống giá.

  • Sản phẩm có giá: Tương tự như bản dành cho Rank Math, nếu $product->get_price() có giá trị, điều kiện if sẽ bị bỏ qua và Yoast SEO sẽ tự động hiển thị giá thực của bạn như bình thường.

seo price woocomerce 5 - ThemeVareno.com
Trước khi kiểm tra
seo price woocomerce 3 - ThemeVareno.com
Sau khi thêm và Sử dụng Rich Results Test của Google kiểm tra kết quả
seo price woocomerce 4 - ThemeVareno.com
Kết quả sau khi chèn code

Tại sao nên dùng cách này?

  • An toàn: Không ảnh hưởng đến các sản phẩm đang bán bình thường.

  • Chính xác: Thông báo cho Google trạng thái PreOrder (Đặt hàng trước) thay vì chỉ để trống, giúp tăng uy tín của website.

  • Tăng khả năng Index: Khi Schema hợp lệ, Google Bot sẽ ưu tiên quét và lập chỉ mục nhanh hơn.

Lời khuyên: Sau khi chèn code, bạn hãy copy một link sản phẩm không có giá và dán vào Công cụ kiểm tra kết quả định dạng của Google là Rich Results Test để xem kết quả nhé.
Nếu bạn dùng Cache hãy xóa và kiểm tra kết quà nhé, chúc bạn thành công!