Bạn đang sử dụng WooCommerce và thấy Google Search Console báo lỗi schema trùng lặp? Hoặc đơn giản là bạn muốn plugin SEO (RankMath, Yoast) thay thế hoàn toàn việc tạo schema mặc định của WooCommerce? Đây là vấn đề rất phổ biến — theo nghiên cứu từ Schema Validator, trùng lặp schema là một trong những lỗi SEO phổ biến nhất trên WordPress, thường do WooCommerce, plugin SEO, và theme cùng tạo schema cùng lúc [1]. Bài viết này mình sẽ hướng dẫn bạn xóa schema sản phẩm do WooCommerce tự động tạo ra — một cách nhanh gọn, an toàn, không cần cài thêm plugin.
Bài viết này thuộc chuyên mục WordPress — nơi mình chia sẻ những thủ thuật kỹ thuật giúp tối ưu website WordPress của bạn.
Tóm tắt nhanh
- WooCommerce tự tạo Product schema mặc định — dễ gây trùng lặp với plugin SEO
- Xóa schema mặc định giúp Google chỉ đọc một nguồn duy nhất, tránh xung đột
- Chỉ cần thêm đoạn code ngắn vào functions.php là xong
- Luôn validate bằng Google Rich Results Test sau khi thay đổi
WooCommerce có thực sự tự tạo schema không?
Có. WooCommerce mặc định tự động tạo Product schema (dữ liệu cấu trúc) cho các trang sản phẩm, trang Cửa hàng, và trang Danh mục sản phẩm.
WooCommerce tạo schema dưới dạng JSON-LD và đặt trong thẻ <head> của trang. Schema này bao gồm các thông tin: tên sản phẩm, giá, tình trạng tồn kho, đánh giá (nếu có), và URL sản phẩm. Mục đích là giúp Google hiểu rõ hơn về sản phẩm của bạn để hiển thị rich results như: giá, đánh giá sao, trạng thái còn hàng.
Tuy nhiên, theo khuyến nghị chính thức từ Google, Product schema không nên được đặt trên trang Danh mục sản phẩm (category pages) [2]. Lý do là vì Product schema cung cấp thông tin về một sản phẩm cụ thể — không phải về một nhóm sản phẩm. Khi bạn đặt Product schema trên category page, bạn đang “nói” với Google rằng tất cả sản phẩm trong danh mục đều giống nhau — điều này không chính xác và có thể gây lỗi.

Tại sao bạn muốn xóa schema sản phẩm?
Có ba lý do chính khiến chủ website muốn xóa schema mặc định của WooCommerce — và mình đã gặp tất cả những trường hợp này khi audit website cho khách hàng.
Lý do 1: Trùng lặp schema từ nhiều nguồn
Đây là nguyên nhân phổ biến nhất. Khi bạn cài đặt một plugin SEO như RankMath, Yoast SEO, hoặc All in One SEO, plugin này thường tự động thêm Product schema cho các trang sản phẩm WooCommerce. Kết quả là: cả WooCommerce và plugin SEO cùng tạo schema — gây ra trùng lặp. Google không biết nên tin vào nguồn nào, và thay vì hiển thị rich results, bạn có thể nhận được cảnh báo lỗi trong Search Console [3].
Trùng lặp schema không chỉ gây lỗi — nó còn có thể khiến rich results không hiển thị. Google cần một nguồn dữ liệu cấu trúc duy nhất và rõ ràng để đưa vào kết quả tìm kiếm. Khi có nhiều nguồn xung đột, Google sẽ bỏ qua tất cả thay vì chọn một.
Lý do 2: Schema mặc định thiếu trường quan trọng
WooCommerce chỉ tạo schema cơ bản — thiếu nhiều trường mà Google khuyến khích như: brand, GTIN, shippingDetails, hoặc aggregateRating đầy đủ. Plugin SEO chuyên dụng thường cung cấp schema hoàn chỉnh hơn, bao gồm tất cả các trường cần thiết để đủ điều kiện hiển thị rich results nâng cao [4].
Lý do 3: Theme cũng tạo schema
Nhiều theme WordPress cao cấp (Astra, Flatsome, Shopkeeper) có tính năng tạo schema riêng. Khi bạn dùng WooCommerce cộng theme có schema, bạn đã có ba nguồn tạo schema cùng lúc! Trong trường hợp này, việc xóa schema của WooCommerce chỉ là bước đầu — bạn cần xác định tất cả các nguồn và chỉ giữ lại một nguồn duy nhất [5].

Hướng dẫn xóa schema WooCommerce
Cách nhanh nhất là thêm đoạn code vào file functions.php của theme (hoặc child theme). Không cần cài thêm plugin, không ảnh hưởng đến cửa hàng.
Bước 1: Mở file functions.php
File functions.php nằm trong thư mục theme WordPress đang kích hoạt. Bạn có thể truy cập theo hai cách:
- Cách 1 — qua WordPress Dashboard: Giao diện → Trình soạn thảo chủ đề → Chọn functions.php
- Cách 2 — qua FTP/cPanel: Truy cập
wp-content/themes/[ten-theme]/functions.php
Để an toàn, mình khuyên bạn nên sử dụng child theme hoặc code snippet plugin như Code Snippets. Nếu bạn sửa trực tiếp vào theme chính, code sẽ bị mất khi theme được cập nhật.
Bước 2: Thêm đoạn code
Sao chép đoạn code sau và dán vào cuối file functions.php:
/**
* Xóa toàn bộ Product schema do WooCommerce tự tạo.
* Dùng khi plugin SEO đã quản lý schema thay thế.
*/
function wc_remove_woocommerce_structured_data() {
// Xóa Product schema trên trang Cửa hàng và Danh mục sản phẩm
remove_action( 'woocommerce_shop_loop', array( WC()->structured_data, 'generate_product_data' ), 10, 1 );
// Xóa structured data trong footer của tất cả các trang
remove_action( 'wp_footer', array( WC()->structured_data, 'output_structured_data' ), 10 );
// Xóa structured data trong email đơn hàng WooCommerce
remove_action( 'woocommerce_email_order_details', array( WC()->structured_data, 'output_email_structured_data' ), 30 );
}
add_action( 'init', 'wc_remove_woocommerce_structured_data' );Lưu ý quan trọng: Đoạn code này xóa toàn bộ structured data do WooCommerce tạo ra. Nếu bạn chỉ muốn xóa trên trang Cửa hàng (shop page) hoặc trang Danh mục mà vẫn giữ trên trang sản phẩm chi tiết, hãy xem phần tiếp theo. Và nếu bạn muốn khám phá thêm các đoạn code hữu ích khác cho WooCommerce, hãy xem bộ sưu tập code snippets cho WooCommerce từ VietnamTutor.
Bước 3: Kiểm tra sau khi thêm code
Sau khi lưu file, hãy kiểm tra bằng cách:
- Vào trang Cửa hàng hoặc Danh mục sản phẩm
- Nhấn Ctrl+U (Windows) hoặc Cmd+Option+U (Mac) để mở source code
- Tìm kiếm
application/ld+jsontrong thẻ<head> - Nếu không tìm thấy — đã xóa thành công!
Bước 4: Validate bằng Google Rich Results Test
Đây là bước bắt buộc sau mọi thay đổi liên quan đến schema. Truy cập Google Rich Results Test, nhập URL của trang Cửa hàng hoặc Danh mục sản phẩm, và kiểm tra:
- Không còn lỗi Product schema trùng lặp
- Rich results vẫn hoạt động trên trang sản phẩm chi tiết (nếu plugin SEO vẫn đang tạo schema)
- Không có cảnh báo mới

Cách xóa chỉ trên trang Cửa hàng
Nếu bạn chỉ muốn xóa Product schema trên trang Cửa hàng và Danh mục sản phẩm, nhưng vẫn giữ schema trên trang chi tiết sản phẩm (nơi schema thực sự hữu ích), hãy dùng đoạn code sau thay thế:
/**
* Xóa Product schema chỉ trên trang Cửa hàng và Danh mục sản phẩm.
* Schema trên trang chi tiết sản phẩm vẫn được giữ nguyên.
*/
function wc_remove_product_schema_from_archive() {
// Chỉ chạy trên trang Cửa hàng, Danh mục, hoặc Tag sản phẩm
if ( is_shop() || is_product_category() || is_product_tag() ) {
remove_action( 'woocommerce_shop_loop', array( WC()->structured_data, 'generate_product_data' ), 10, 1 );
}
}
add_action( 'woocommerce_init', 'wc_remove_product_schema_from_archive' );Đoạn code này sử dụng các điều kiện có sẵn của WooCommerce để chỉ xóa schema ở những nơi không cần thiết. Trang sản phẩm chi tiết (single product page) vẫn giữ nguyên Product schema — đây là nơi Google thực sự cần schema để hiển thị rich results.
Xóa schema trên trang cụ thể bằng Rank Math
Nếu bạn đang dùng Rank Math, plugin này có tùy chọn xóa Schema mặc định mà không cần code. Truy cập Rank Math → Titles & Meta → Product Categories → cuộn xuống phần “Remove Snippet Data” và bật tùy chọn này [6]. Tương tự, bạn có thể xóa Schema trên các trang taxonomy cụ thể bằng code snippet trong file rank-math.php của child theme.

Xác nhận thay đổi sau khi cài đặt
Sau khi thêm code, việc xác nhận thay đổi đúng cách là bước quan trọng nhất — nhiều người bỏ qua bước này và sau đó không hiểu tại sao lỗi vẫn còn.
1. Kiểm tra view-source của trang
Mở trình duyệt, vào trang Cửa hàng, nhấn chuột phải → “Xem nguồn trang” (View page source). Tìm kiếm structured-data hoặc Product trong các thẻ <script type="application/ld+json">. Nếu kết quả chỉ còn schema từ plugin SEO (RankMath/Yoast) — bạn đã thành công.
2. Chạy Google Rich Results Test
Nhập URL của trang Cửa hàng vào công cụ. Nếu trước đây báo lỗi trùng lặp Product, giờ sẽ không còn. Đồng thời, kiểm tra trang sản phẩm chi tiết — rich results vẫn nên hoạt động bình thường.
3. Kiểm tra Google Search Console
Sau 24-48 giờ (sau khi Google crawl lại), vào Search Console → Mục “Những vấn đề về Enhancements” → Kiểm tra xem lỗi Product schema đã được giải quyết chưa. Đôi khi lỗi cũ vẫn hiển thị trong console nhưng thực tế đã được sửa — chỉ cần đợi Google cập nhật.
4. Xóa cache
Nếu website dùng cache (WP Rocket, LiteSpeed Cache, Cloudflare), hãy xóa cache sau khi thêm code. Cache cũ có thể khiến schema cũ vẫn được phục vụ cho người dùng và Googlebot.
Mình đã gặp nhiều trường hợp khách hàng thêm code đúng nhưng vẫn thấy lỗi — nguyên nhân hầu hết là do cache chưa được xóa hoặc CDN vẫn phục vụ phiên bản cũ. Đây là bước dễ bỏ qua nhưng rất quan trọng.

Bạn đã thử xóa schema WooCommerce nhưng vẫn gặp vấn đề? Để lại comment nhé — mình sẽ hỗ trợ kiểm tra và xác định nguyên nhân chính xác. Và đừng quên nếu bài viết này hữu ích, hãy chia sẻ cho những ai đang gặp vấn đề tương tự!
Nguồn tham khảo
- Schema Validator — Fix Duplicate Schema Markup Errors 2026
- Rank Math — Remove Schema from Product Category Pages
- Schema Validator — Fix Duplicate Schema Markup Errors
- Litos.io — WooCommerce Product Schema How to Add It Correctly 2026
- Voxfor — How to Add WooCommerce Product Schema for Rich Results 2026
- Rank Math — Remove Schema from Product Category Pages
Các câu hỏi thường gặp
Xóa schema WooCommerce có ảnh hưởng đến SEO không?
Không — nếu plugin SEO (RankMath, Yoast) vẫn đang tạo Product schema thay thế. Việc xóa schema trùng lặp thực tế CẢI THIỆN SEO vì Google không còn bị xung đột dữ liệu. Nếu bạn xóa hoàn toàn mà không có nguồn thay thế, Product schema sẽ biến mất khỏi kết quả tìm kiếm — đây là điều bạn nên tránh.
Có nên xóa schema trên trang sản phẩm chi tiết không?
Không. Trang chi tiết sản phẩm (single product page) là nơi Product schema thực sự hữu ích — giúp Google hiển thị giá, đánh giá sao, và trạng thái tồn kho trong kết quả tìm kiếm. Chỉ xóa trên trang Cửa hàng và Danh mục sản phẩm — nơi Google khuyến nghị KHÔNG có Product schema.
Code có bị mất khi cập nhật theme không?
Có — nếu bạn sửa trực tiếp vào theme chính. Giải pháp: (1) Dùng child theme — code trong child theme không bị ghi đè khi theme mẹ cập nhật; (2) Dùng plugin Code Snippets — plugin này lưu code riêng biệt và không bị ảnh hưởng bởi cập nhật theme.
Làm sao biết plugin SEO nào đang tạo schema?
Mở source code trang (Ctrl+U hoặc Cmd+Option+U), tìm kiếm application/ld+json và đọc nội dung bên trong. Schema từ RankMath thường có comment /* Schema by Rank Math */. WooCommerce có comment WooCommerce JSON-LD. Yoast thường không có comment nhưng có cấu trúc riêng. Nếu thấy nhiều block ld+json cùng loại — đó là trùng lặp.
Có plugin nào xóa schema WooCommerce không cần code không?
Có. Plugin “Disable WooCommerce Schema” trên WordPress.org làm điều này mà không cần code. Tuy nhiên, mình vẫn khuyên dùng code vì nó nhẹ hơn, không phụ thuộc plugin bên thứ ba, và bạn kiểm soát chính xác những gì được xóa. Plugin có thể conflict với plugin khác — code thì bạn biết chính xác đang làm gì.
Tôi dùng theme Flatsome/Astra — có cần xóa schema theme không?
Rất có thể. Flatsome, Astra, và nhiều theme cao cấp khác tự tạo Product schema. Bạn cần xóa schema từ cả WooCommerce và theme. Kiểm tra bằng cách view-source: nếu có nhiều hơn một block ld+json cho cùng loại schema — bạn có trùng lặp. Vào Settings của theme (Appearance → Customize) tìm tùy chọn “Structured Data” hoặc “Schema Markup” để tắt.
Hướng dẫn xóa schema sản phẩm do WooCommerce tự tạo ra để tránh trùng lặp với plugin SEO. Bao gồm code snippet và checklist kiểm tra sau khi thay đổi.
