我正在计算一个过滤器,但无法计算:(
只想在分类的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;
});
我做错了什么?我已经做了一整天了------
如果您检查类WC_Structured_Data
的代码,您会看到woocommerce_structured_data_product
过滤器在函数generate_product_data
中执行
WC类别WC_Structured_Data
的完整来源:https://github.com/woocommerce/woocommerce/blob/b88b868ab8919b7c854173098b7d6d4ab227f9ee/includes/class-wc-structured-data.php
$this->set_data( apply_filters( 'woocommerce_structured_data_product', $markup, $product ) );
在动作woocommerce_single_product_summary
上执行generate_product_data
功能
add_action( 'woocommerce_single_product_summary', array( $this, 'generate_product_data' ), 60 );
因此,您的代码只适用于产品单页,而不适用于归档/列表页,例如分类页面
您想要实现的功能在WC中是不可行的,您需要自定义。
从逻辑上讲,单个产品页面上的结构化数据是可行的,因为事实上只有一个产品,并且产品信息是可用的,另一方面,产品列表中有多个产品(你可能需要考虑,就像你想显示第一个产品的详细信息一样(,所以这是模糊的,对于WC来说是不可行的。