php - 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;
});
我究竟做错了什么?我整天都在做这件事-_-
解决方案
如果您检查类的代码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 ) );
并且generate_product_data
功能在动作上执行woocommerce_single_product_summary
add_action( 'woocommerce_single_product_summary', array( $this, 'generate_product_data' ), 60 );
因此,您的代码仅适用于产品单页,而不适用于归档/列表页面,例如分类页面。
您想要实现的功能在 WC 中开箱即用是不可行的,您需要自己定制。
从逻辑上讲,单个产品页面上的结构化数据是可行的,因为只有一个产品并且产品信息可用,另一方面,产品列表有多个产品(您可能需要考虑是否要显示详细信息第一个产品)所以它是模棱两可的,不适合 WC 开箱即用。
推荐阅读
- android - Android 应用程序 ui 测试中的 Espresso 和应用程序重启
- php - 将 woocommerce 中的所有产品设为“缺货”(删除所有产品数量)
- python - Mechanicalsoup 表单的选择而不是输入文本区域
- caching - 是否可以限制 ksqlDB 表中的数据?
- php - 正则表达式模板解析器忽略新行
- json - 有条件地在不同节点上获取值的 JSON 路径
- linux - cat 文件,除了一个
- phpmailer - PHPMailer 在正文中发送模板失败
- javascript - 用javascript嵌套对象中的值交换键
- reactjs - findByTestId 根据测试的顺序具有不同的行为