【问题标题】:WooCommerce: Disabling checkout fields with a filter hookWooCommerce:使用过滤器挂钩禁用结帐字段
【发布时间】:2016-10-13 23:31:06
【问题描述】:

我曾尝试使用woocommerce_checkout_fields 过滤钩子同时禁用多个结帐字段的“必填”属性,但没有成功。

插件也无法正常工作。这是我的代码:

// Hook in
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );

// Our hooked in function - $fields is passed via the filter!
function custom_override_checkout_fields( $fields ) {
$fields['billing']['billing_address_1']['required'] = false;
$fields['billing']['billing_address_2']['required'] = false;

$fields['billing']['billing_postcode']['required'] = false;
$fields['billing']['billing_city']['required'] = false;
$fields['billing']['billing_phone']['required'] = false;

     return $fields;
}

怎么了?
我怎样才能做到这一点?

【问题讨论】:

    标签: php wordpress woocommerce hook checkout


    【解决方案1】:

    为此,您需要使用unset() 函数,您可以这样做:

    add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
    
    function custom_override_checkout_fields( $fields ) {
        unset($fields['billing']['billing_address_1']);
        unset($fields['billing']['billing_address_2']);
        unset($fields['billing']['billing_postcode']);
        unset($fields['billing']['billing_city']);
        unset($fields['billing']['billing_phone']);
        return $fields;
    }
    

    您需要将此代码粘贴到位于活动子主题或主题中的 function.php 文件中。


    您已通过更新更改了您的问题:这是我的新答案

    使地址字段可选(关于您的更新):

    为此,您必须使用不同的过滤器挂钩。有 2 种不同的过滤器钩子:

    1) 对于帐单字段:

    add_filter( 'woocommerce_billing_fields', 'wc_optional_billing_fields', 10, 1 );
    function wc_optional_billing_fields( $address_fields ) {
        $address_fields['billing_address_1']['required'] = false;
        $address_fields['billing_address_2']['required'] = false;
        $address_fields['billing_postcode']['required'] = false;
        $address_fields['billing_city']['required'] = false;
        $address_fields['billing_phone']['required'] = false;
        return $address_fields;
    }
    

    2) 对于运输字段:

    add_filter( 'woocommerce_shipping_fields', 'wc_optional_shipping_fields', 10, 1 );
    function wc_optional_shipping_fields( $address_fields ) {
        $address_fields['shipping_phone']['required'] = false;
        return $address_fields;
    }
    

    使地址字段成为必填项:

    您可以使用上述相同的钩子和函数,将每个字段的false 更改为true


    您需要将此代码粘贴到位于活动子主题或主题中的 function.php 文件中。

    参考:Customizing checkout fields using hooks

    【讨论】:

    • 你误解了我的问题。我需要使几个字段“不需要”,而不是完全禁用它们。这实际上工作正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 2016-09-24
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多