我正在尝试删除Woocommerce添加到产品页面中的structured data
。
我做了一些研究,发现WC_Structured_Data::generate_product_data()
生成结构化数据标记。它挂在woocommerce_single_product_summary
动作钩子中的woocommerce/templates/content-single-product.php
模板文件中。
我尝试将以下代码添加到functions.php
中
remove_action( 'woocommerce_single_product_summary', 'WC_Structured_Data::generate_product_data()', 60 );
所以结构化数据不会被Woocommerce,添加,但是它不能运行…
我做错了什么吗?还有别的方法来做我想要达到的目标吗?
发布于 2018-03-15 10:41:32
相反,您可以使用位于WC_Structured_Data
中的专用筛选器钩子WC_Structured_Data
,用于对单个产品页中的结构化数据输出进行空化:
add_filter( 'woocommerce_structured_data_product', 'structured_data_product_nulled', 10, 2 );
function structured_data_product_nulled( $markup, $product ){
if( is_product() ) {
$markup = '';
}
return $markup;
}
代码在您的活动子主题(或活动主题)的function.php文件中。测试和工作。
发布于 2019-01-12 00:08:11
我怀疑人们希望删除默认选项卡,他们在看到Woocommerce content-single-product.php
模板后来到这里。在这个模板中,您可以看到generate_product_data()
与优先级60挂钩。
检查了运行在woocommerce_single_product_summary
上的钩子之后。
您可以通过以下方式轻松地删除选项卡:
remove_action( 'woocommerce_single_product_summary', 'woocommerce_output_product_data_tabs', 60 );
我想Woocommerce忘记提到这个add_action了。
发布于 2020-02-20 09:54:43
这就是如何删除与实例化对象方法关联的钩子。您必须找到保存新对象实例的变量。
在这种情况下,主WooCommerce对象可以作为$GLOBALS['woocommerce']
访问,并且它具有公共属性$structured_data
,它包含WC_Structured_Data对象的一个实例。
因此,要删除问题中的钩子,可以编写以下代码:
remove_action( 'woocommerce_before_main_content', array( $GLOBALS['woocommerce']->structured_data, 'generate_website_data' ), 30 );
https://stackoverflow.com/questions/49306835
复制相似问题