WooCommerce发货明细必填字段

时间:2015-09-28 作者:Rob Wassell

我正在尝试将电话号码必填字段添加到Woocommerce结帐的发货详细信息页面,但只有在选择其他发货地址时,该字段才应为必填字段。

Woocommerce认为这是一个定制的修改,超出了他们的支持范围,并建议我将问题张贴在这里。

看完这篇文章后,我取得了一些进展http://docs.woothemes.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/ 这让我几乎做到了,但我有一些问题。

我只希望该字段在客户发货至其他地址时为必填字段,而该字段表示,即使未选择其他发货详细信息,也需要填写该字段。

我不得不放弃这些更改,因为这是一个实时站点,但我更新了功能。php具有以下功能:

//Add Tel Number to Shipping Address 
// 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[\'shipping\'][\'shipping_phone\'] = array( 
\'label\' => __(\'Phone\', \'woocommerce\'), 
\'placeholder\' => _x(\'Phone\', \'placeholder\', \'woocommerce\'), 
\'required\' => false, 
\'class\' => array(\'form-row-wide\'), 
\'clear\' => true 
);

return $fields; 
}

/** 
* Process the checkout 
*/ 
add_action(\'woocommerce_checkout_process\', \'my_custom_checkout_field_process\');

function my_custom_checkout_field_process() { 
// Check if set, if its not set add an error. 
if ( ! $_POST[\'shipping_phone\'] ) 
wc_add_notice( __( \'Please enter a phone number for the recipient.\' ), \'error\' ); 
}
这是可行的,因为显示了字段,但我有两个问题。

1) 如果选择了发货至其他地址,我如何使其仅要求强制完成?

2) 即使该字段是必填字段,我如何才能像其他字段一样在手机标签旁边显示红色星号?

如果有人能帮忙,我会非常感激的。

谢谢

抢劫

2 个回复
最合适的回答,由SO网友:Rob Wassell 整理而成

我自己回顾了这一点,并回答了我自己的问题。

通过遵循Woocommerce文档,我实际上把自己弄糊涂了,第二个强制检查不适用,因为我们可以使用此主要功能将required从false设置为true。这会自动添加红色星号,并使该字段成为必填字段,而无需执行其他检查。

非常简单:

//Add Tel Number to Shipping Address 
// 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[\'shipping\'][\'shipping_phone\'] = array( 
\'label\' => __(\'Phone\', \'woocommerce\'), 
\'placeholder\' => _x(\'Phone\', \'placeholder\', \'woocommerce\'), 
\'required\' => true, 
\'class\' => array(\'form-row-wide\'), 
\'clear\' => true 
);

return $fields; 
}

/** 
* Process the checkout 
*/ 
add_action(\'woocommerce_checkout_process\', \'my_custom_checkout_field_process\');
我希望这对其他人有帮助。

当做

抢劫

SO网友:divin kattipparambil
add_filter( \'woocommerce_checkout_fields\', \'billing_fields_altration\', 9999 );

function billing_fields_altration( $woo_checkout_fields_array ) {


    // unset( $woo_checkout_fields_array[\'billing\'][\'billing_first_name\'] );
     unset( $woo_checkout_fields_array[\'billing\'][\'billing_last_name\'] );
    // unset( $woo_checkout_fields_array[\'billing\'][\'billing_phone\'] );
    // unset( $woo_checkout_fields_array[\'billing\'][\'billing_email\'] );
    // unset( $woo_checkout_fields_array[\'order\'][\'order_comments\'] );

    // and to remove the fields below
    unset( $woo_checkout_fields_array[\'billing\'][\'billing_company\'] );
    //unset( $woo_checkout_fields_array[\'billing\'][\'billing_country\'] );
    //unset( $woo_checkout_fields_array[\'billing\'][\'billing_address_1\'] );
    unset( $woo_checkout_fields_array[\'billing\'][\'billing_address_2\'] );//REMOVE FIELDS
    //unset( $woo_checkout_fields_array[\'billing\'][\'billing_city\'] );
    //unset( $woo_checkout_fields_array[\'billing\'][\'billing_state\'] );
    //unset( $woo_checkout_fields_array[\'billing\'][\'billing_postcode\'] );
 $woo_checkout_fields_array[\'billing\'][\'billing_phone\'][\'required\'] = true;//ENABLE VALIDATION
 unset( $woo_checkout_fields_array[\'shipping\'][\'shipping_last_name\'] );
 //unset( $address_fields_array[\'postcode\'][\'validate\']);//DISABLE VALIDATION
    return $woo_checkout_fields_array;
}

相关推荐