2016-06-13 73 views
0

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

插件工作不正常。这是我的代码:

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

什么问题?
我该如何做到这一点?

回答

8

您需要使用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

+0

你误解了我的问题。我需要制作几个“不需要”的字段,而不是完全禁用它们。这实际上工作正常。 – Bernhard