我试图将标题添加到面包屑上方。我的问题是为什么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条件数据的最佳钩子?
答案 0 :(得分:1)
操作init
发生得太早,无法知道当前页面是否应显示页面。你必须至少等到template_redirect
。引自“is_page()
无法在插件中工作” - https://wordpress.stackexchange.com/q/115142/26523