将itemReviewed的道具添加到woocommerce产品循环中

时间:2019-06-14 08:13:52

标签: wordpress woocommerce woocommerce-theming

在woocommerce主题上,我在Google结构化数据上遇到了一些错误,例如:

enter image description here

我已经在mytheme / woocommerce / loop / ratings.php中找到了代码 在此文件中,只有此方法:

$product->get_average_rating();

问题是:是否有实现该功能的挂钩或动作? 我需要实现“ ItemReviewed”道具。

3 个答案:

答案 0 :(得分:0)

这取决于您的产品架构,选项一是删除错误,但不会推送评论是

/**
 * 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 woocoommerce插件和插件文档来添加正确的架构来实现

https://developer.yoast.com/schema-documentation/woocommerce-seo/

答案 1 :(得分:0)

我遇到了同样的问题-评论未验证并抛出错误

通过修改/wp-content/themes/YOURTHEME/woocommerce/single-product/review.php进行修复

我添加了以下代码:

<p>Item Reviewed: <span itemprop="itemReviewed"><?php echo get_the_title(); ?></span></p>

这在结构化数据工具中生成了itemReviewed标记,并且我的评论已通过验证。

可能希望将其放在子主题中,以防万一:)

答案 2 :(得分:0)

定义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 );