初始化Woo Conditionals

时间:2015-08-18 17:28:24

标签: wordpress woocommerce

我试图将标题添加到面包屑上方。我的问题是为什么WooCommerce Conditionals在template_redirect上工作得更好,但不能在init上工作。例如:

/** Woo General Init **/
function woo_general_init() {
    echo ( is_product() ) ? 'True' : 'False';

    if( is_product() ) {
        add_action( 'woocommerce_before_main_content', 'woocommerce_template_single_title', 10 );
        add_action( 'woocommerce_before_main_content', 'woocommerce_template_single_excerpt', 11 );
    }
}
add_action( 'init', 'woo_general_init' );

在查看单个WooCommerce产品时,在我的文档顶部评估False。另一方面,如果我将init更改为template_redirect条件输出True

/** Woo General Init **/
function woo_general_init() {
    echo ( is_product() ) ? 'True' : 'False';

    if( is_product() ) {
        add_action( 'woocommerce_before_main_content', 'woocommerce_template_single_title', 10 );
        add_action( 'woocommerce_before_main_content', 'woocommerce_template_single_excerpt', 11 );
    }
}
add_action( 'template_redirect', 'woo_general_init' );

为什么我得到"错误"当挂钩到init但是" True"在template_redirect?什么是运行WooCommerce条件数据的最佳钩子?

1 个答案:

答案 0 :(得分:1)

操作init发生得太早,无法知道当前页面是否应显示页面。你必须至少等到template_redirect。引自“is_page()无法在插件中工作” - https://wordpress.stackexchange.com/q/115142/26523