Wordpress过滤Wooccommerce结构化数据



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

只想在分类的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来说是不可行的。

最新更新