在我的 woocommerce 主题中,我在 Google 结构化数据上遇到了一些错误,例如:
我在 mytheme/woocommerce/loop/ratings.php 中找到了代码在这个文件中只有这个方法:
$product->get_average_rating();
问题是:有实现这个功能的钩子或动作吗?我需要实现“ItemReviewed”道具。
在我的 woocommerce 主题中,我在 Google 结构化数据上遇到了一些错误,例如:
我在 mytheme/woocommerce/loop/ratings.php 中找到了代码在这个文件中只有这个方法:
$product->get_average_rating();
问题是:有实现这个功能的钩子或动作吗?我需要实现“ItemReviewed”道具。
定义 woocommerce_structured_data_review 回调
function filter_woocommerce_structured_data_review( $markup, $comment ) {
global $product;
$markup['itemReviewed']['sku'] = $product->get_sku();
$markup['itemReviewed']['brand'] = $product->get_attribute( 'brand' ) ?? null;
$markup['itemReviewed']['description'] = wp_strip_all_tags( do_shortcode( $product->get_short_description() ? $product->get_short_description() : $product->get_description() ) );
$markup['itemReviewed']['image'] = wp_get_attachment_url( $product->get_image_id() );
$markup['itemReviewed']['isbn'] = $product->get_attribute( 'isbn' ) ?? null;
$markup['itemReviewed']['AggregateRating'] = $product->get_average_rating();
return $markup;
};
Woocommerce 评论过滤器
add_filter( 'woocommerce_structured_data_review',
'filter_woocommerce_structured_data_review', 10, 2 );
我有同样的问题 - 评论没有验证并抛出错误
设法通过编辑 /wp-content/themes/YOURTHEME/woocommerce/single-product/review.php 来修复它
我添加了以下代码:
<p>Item Reviewed: <span itemprop="itemReviewed"><?php echo get_the_title(); ?></span></p>
这在结构化数据工具中生成了 itemReviewed 标记,并且我的评论得到了验证。
可能想把它放在子主题中以防万一:)
这取决于您的产品架构,选项一是删除错误但不会推送评论是
/**
* Remove the generated product schema markup from Product Category and Shop pages.
*/
function wc_remove_product_schema() {
remove_action( 'woocommerce_shop_loop', array( WC()->structured_data, 'generate_product_data' ), 10, 0 );
}
add_action( 'woocommerce_init', 'wc_remove_product_schema' );
如果您想汇总您的评论,如果您使用 yoast 和 woocommerce,则需要更新您的架构,这可以通过查看特定的 yoast woocommerce 插件和插件文档来添加正确的架构来实现
https://developer.yoast.com/schema-documentation/woocommerce-seo/