如何在Wordpress Functions.php文件

时间:2017-10-28 15:17:02

标签: php wordpress if-statement woocommerce

我正在使用woocommerce,我正在编辑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;
    }

}

如果有人可以帮助我只显示第二个结帐页面上的结算信息而不是第一个结账信息,那将非常感谢

感谢

2 个答案:

答案 0 :(得分:0)

在构造全局WP_Query实例$ wp_query之前,不能调用is_page()。在构造$ 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()
});

答案 1 :(得分:0)

请你把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;
        }
    }