首页 > 解决方案 > Wordpress 过滤 Woocommerce 结构化数据

问题描述

我正在计算一个过滤器,但无法计算:)

只想在分类法的 CollectionPage 中使用 og:image 值更改 PrimaryImageOfPage 值。

可能是我必须在这里woocommerce_structured_data_product过滤并寻找图像$markup['image'] = $image;

我创建了一些过滤器,但woocommerce_structured_data_product我猜不是。

其中一个就是这样,但它......不。

add_filter( 'woocommerce_structured_data_product', function( $markup ) {
    $markup['image'] = ('rank_math/opengraph/{$network}/image');
    return $markup;
});

我究竟做错了什么?我整天都在做这件事-_-

标签: phpjsonwordpresswoocommerce

解决方案


如果您检查类的代码WC_Structured_Data,您会看到woocommerce_structured_data_product过滤器在函数内部执行generate_product_data

WC 类的完整来源WC_Structured_Datahttps ://github.com/woocommerce/woocommerce/blob/b88b868ab8919b7c854173098b7d6d4ab227f9ee/includes/class-wc-structured-data.php

$this->set_data( apply_filters( 'woocommerce_structured_data_product', $markup, $product ) );

并且generate_product_data功能在动作上执行woocommerce_single_product_summary

add_action( 'woocommerce_single_product_summary', array( $this, 'generate_product_data' ), 60 );

因此,您的代码仅适用于产品单页,而不适用于归档/列表页面,例如分类页面。
您想要实现的功能在 WC 中开箱即用是不可行的,您需要自己定制。

从逻辑上讲,单个产品页面上的结构化数据是可行的,因为只有一个产品并且产品信息可用,另一方面,产品列表有多个产品(您可能需要考虑是否要显示详细信息第一个产品)所以它是模棱两可的,不适合 WC 开箱即用。


推荐阅读