如何正确使用is_single隐藏我的数组?

时间:2019-08-12 19:33:31

标签: arrays wordpress wordpress-theming customization

我可以全局删除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。

1 个答案:

答案 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' );