如何插入如果WordPress的functions.php的声明文件
问题描述:
我使用woocommerce,我编辑的wordpress 的functions.php文件。如何插入如果WordPress的functions.php的声明文件
我的店里有两个结账页面,一个前管理员审核订单(结帐)和其他管理员批准订单(最终结账)之后。
我想从第一个结帐页面中删除结算信息,并仅在第二个(最终)结帐页面中显示它。
在的functions.php页,我用下面的if语句,但它不工作。我认为if语句正在针对functions.php页面进行测试,而不是结帐页面。
if (is_page('checkout')){
add_filter('woocommerce_checkout_fields' , 'custom_override_checkout_fields');
function custom_override_checkout_fields($fields) {
unset($fields['billing']['billing_first_name']);
unset($fields['billing']['billing_last_name']);
unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_address_1']);
return $fields;
}
}
如果有人能帮助我只显示第二结账页面上的计费信息,而不是第一,那将是非常赞赏
THANKS
答
之前,你不能调用is_page()全局WP_Query实例$ wp_query被构造。您的functions.php包含在$ wp_query构建之前。为了解决使用
add_action('parse_request', function() {
# At this point $wp_query has been constructed and you can call is_page()
});
答
这个问题,你需要$ wp_query对象被创建后,安排你的代码后运行,你可以请把IF条件函数内部,然后再试一次?
add_filter('woocommerce_checkout_fields' , 'custom_override_checkout_fields');
function custom_override_checkout_fields($fields) {
if (is_page('checkout')){
unset($fields['billing']['billing_first_name']);
unset($fields['billing']['billing_last_name']);
unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_address_1']);
return $fields;
}
}
如果你在你的函数中使用'unset()',这将消除前后的这些字段,因为客户将无法输入任何数据。你的条件应该在函数内部,而不是在外部...对于正常的结账页面,你应该使用'if(is_checkout()){'better than'if(is_page('checkout')){'...但是记住'woocommerce_checkout_fields 'hook只在结账页面上工作,所以如果你使用它,你不需要条件函数... – LoicTheAztec
没有任何分离文件的最终结帐页面?像final-checkout.php? –