我可以全局删除WP挂钩,但是当我尝试在特定页面上删除它们时,我的代码不起作用。我今天了解到,我必须使用条件语句来实现这一目标,并且经过长时间连续的搜索,我认为我应该使用带有数组的“ is_single标签”来实现此目的。我在数组中使用产品ID。
如何在我的代码中放置条件标记和数组?
我试图将数组放置在函数内而没有成功。
这是全局删除该钩子的代码:
function remove_woo_commerce_hooks() {
global $avada_woocommerce;
remove_action( 'woocommerce_after_single_product_summary', array(
$avada_woocommerce, 'output_related_products' ), 15 );
}
add_action( 'after_setup_theme', 'remove_woo_commerce_hooks' );
这是我仅删除数组中页面上的钩子而没有成功完成的工作:
function remove_woo_commerce_hooks() {
global $avada_woocommerce;
if ( is_single( array(20031, 17222))) {
remove_action( 'woocommerce_after_single_product_summary', array(
$avada_woocommerce, 'output_related_products' ), 15 );
}
}
add_action( 'after_setup_theme', 'remove_woo_commerce_hooks' );
我希望代码能从数组中标识的页面中删除related_products。
添加数组时,我没有收到任何错误,并且页面上的输出未更改。它仍然显示related_products。
答案 0 :(得分:0)
您不应使用is_single,而是要检查帖子ID数组中是否包含该帖子ID。 如果您的函数在“ after_setup_theme”上触发,您仍然无法获取全局$ post变量,因此我将尝试使用“ template_redirect”。
function remove_woo_commerce_hooks() {
global $avada_woocommerce,$post;
if ( is_object( $post ) && in_arry( $post->ID,array( 20031,17222 ) ) ) {
remove_action( 'woocommerce_after_single_product_summary', array(
$avada_woocommerce, 'output_related_products' ), 15 );
}
}
add_action( 'template_redirect', 'remove_woo_commerce_hooks' );