WooCommerce:使用过滤器挂钩禁用结帐字段

时间:2016-06-13 13:53:44

标签: php wordpress woocommerce hook checkout

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

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

// 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;
}

有什么问题?
我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:9)

您需要使用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文件中。

您已使用更新 更改了您的问题:这是我的新答案

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

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

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