Woocommerce 在电子商务签出表单中隐藏/显示字段
我在woocommerce结帐表单中添加并创建了一个新字段 我还在订单页面和通知邮件中添加了该字段 我添加了一个复选框字段,用于隐藏或显示我的新字段 我的问题:新字段是必填字段,我希望它在隐藏时成为可选字段Woocommerce 在电子商务签出表单中隐藏/显示字段,woocommerce,show-hide,checkout,Woocommerce,Show Hide,Checkout,我在woocommerce结帐表单中添加并创建了一个新字段 我还在订单页面和通知邮件中添加了该字段 我添加了一个复选框字段,用于隐藏或显示我的新字段 我的问题:新字段是必填字段,我希望它在隐藏时成为可选字段 // 1 Display a custom field on checkout and on My account > edit billing address add_filter( 'woocommerce_billing_fields' , 'adding_billing_cod
// 1 Display a custom field on checkout and on My account > edit billing address
add_filter( 'woocommerce_billing_fields' , 'adding_billing_codice_iva', 20, 1 );
function adding_billing_codice_iva ( $fields ) {
$fields['billing_codice_iva'] = array(
'label' => __('Partita Iva | VAT', 'woocommerce'),
'placeholder' => _x('Inserisci la partita iva', 'placeholder', 'woocommerce'),
'class' => array('form-row-wide'),
'required' => true,
'clear' => true,
);
return $fields;
}
// 2 Save the custom field data to the order meta data and to user meta data
add_action( 'woocommerce_checkout_create_order', 'codice_iva_order_meta', 20, 2 );
function codice_iva_order_meta( $order, $data ) {
if ( isset( $_POST['billing_codice_iva'] ) && ! empty( $_POST['billing_codice_iva'] ) ) {
$order->update_meta_data('_billing_codice_iva', sanitize_text_field($_POST['billing_codice_iva']) );
update_user_meta( $order->get_customer_id(), 'billing_codice_iva', sanitize_text_field($_POST['billing_codice_iva']) );
}
}
// 3 Order pages (frontend and admin): Display custom field "codice iva"
add_filter( 'woocommerce_order_details_after_order_table' , 'display_admin_order_meta_codice_iva', 20, 1 ); // Front
add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_admin_order_meta_codice_iva', 20, 1 ); // Admin
function display_admin_order_meta_codice_iva( $order ){
$codice_iva = $order->get_meta('_billing_codice_iva', true );
if( ! empty( $codice_iva ) ){
$label = __('Partita Iva | VAT');
if( is_admin() ){ // Admin
echo '<p><strong>' . $label . ':</strong> ' . $codice_iva . '</p>';
}
else { // Front end: order view and Order received (thankyou)
echo '<table class="woocommerce-table"><tbody><tr>
<th>' . $label . ':</th><td>' . $codice_iva . '</td>
</tr></tbody></table>';
}
}
}
// 4 Email notifications: Display custom field "codice iva"
add_filter( 'woocommerce_email_order_meta_fields' , 'display_email_codice_iva', 20, 3 );
function display_email_codice_iva ( $fields, $sent_to_admin, $order ) {
$codice_iva = $order->get_meta('_billing_codice_iva', true );
if( ! empty( $codice_iva ) )
$fields['codice_iva'] = array(
'label' => __("Partita Iva | VAT"),
'value' => $codice_iva,
);
return $fields;
}
// 5 Add a Checkbox to Hide/Show Checkout Field - WooCommerce
add_filter( 'woocommerce_checkout_fields' , 'bbloomer_display_checkbox_and_new_checkout_field' );
function bbloomer_display_checkbox_and_new_checkout_field( $fields ) {
$fields['billing']['checkbox_trigger'] = array(
'type' => 'checkbox',
'label' => __('Sei una azienda', 'woocommerce'),
'class' => array('form-row-wide'),
'clear' => true
);
return $fields;
}
// 6 Hide/Show Checkout Field action - WooCommerce
add_action( 'woocommerce_after_checkout_form', 'bbloomer_conditionally_hide_show_billing_codice_iva', 9999 );
function bbloomer_conditionally_hide_show_billing_codice_iva() {
wc_enqueue_js( "jQuery('input#checkbox_trigger').change(function(){
if (! this.checked) {
// HIDE IF NOT CHECKED
jQuery('#billing_codice_iva_field').fadeOut();
jQuery('#billing_codice_iva_field input').val('');
} else {
// SHOW IF CHECKED
jQuery('#billing_codice_iva_field').fadeIn();
}
}).change();");
}
//1在结帐和我的帐户上显示自定义字段>编辑帐单地址
添加过滤器('woocommerce\u billing\u fields','adding\u billing\u codice\u iva',20,1);
函数添加\账单\密码\ iva($fields){
$fields['billing\u codice\u iva']=数组(
“标签”=>“‘增值税’、‘商业’”,
“占位符”=>\ux('Inserisci la partita iva','placeholder','woocommerce'),
'class'=>array('form-row-wide'),
“必需”=>true,
“清除”=>正确,
);
返回$fields;
}
//2将自定义字段数据保存到订单元数据和用户元数据
添加操作('woocommerce\u checkout\u create\u order'、'codice\u iva\u order\u meta',20,2);
函数codice\u iva\u order\u meta($order,$data){
如果(设置($_POST['billing_codice_iva'])和($_POST['billing_codice_iva'])为空($_POST['billing_iva'])){
$order->update_meta_数据(“'u billing_codice_iva',sanitize_text_字段($u POST['billing_codice_iva'));
更新_user_meta($订单->获取_客户_id(),'billing_codice_iva',清理_text_字段($_POST['billing_codice_iva'));
}
}
//3个订单页面(前端和管理):显示自定义字段“codice iva”
添加过滤器('woocommerce\u order\u details\u after\u order\u table','display\u admin\u order\u meta\u codice\u iva',20,1);//正面
添加操作('woocommerce_admin_order_data_after_billing_address','display_admin_order_meta_codice_iva',20,1);//管理
功能显示\管理\订单\元\代码\ iva($order){
$codice\u iva=$order->get\u meta(“'u billing\u codice\u iva',true);
如果(!空($codice_iva)){
$label=uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuiva部分(增值税));
如果(是_admin()){//admin
回显“”.$label.”:“.$codice_iva.””;
}
else{//前端:订单视图和订单接收(谢谢)
回声'
“.$label.”:“.$codice_iva.”
';
}
}
}
//4电子邮件通知:显示自定义字段“codice iva”
添加过滤器('woocommerce\u email\u order\u meta\u fields','display\u email\u codice\u iva',20,3);
功能显示\u电子邮件\u密码\u iva($fields,$sent\u to\u admin,$order){
$codice\u iva=$order->get\u meta(“'u billing\u codice\u iva',true);
如果(!空($codice_iva))
$fields['codice_iva']=数组(
“标签”=>(“第四部分增值税”),
“值”=>$codice_iva,
);
返回$fields;
}
//5添加复选框以隐藏/显示签出字段-WooCommerce
添加过滤器(“woocommerce\u签出\u字段”、“bbloomer\u显示\u复选框\u和\u新建\u签出\u字段”);
功能bbloomer\u display\u checkbox\u和\u new\u checkout\u字段($fields){
$fields['billing']['checkbox\u trigger']=array(
'键入'=>'复选框',
“标签”=>“'Sei una azienda','woocommerce'),
'class'=>array('form-row-wide'),
“清除”=>true
);
返回$fields;
}
//6隐藏/显示签出字段操作-WooCommerce
添加操作('woocommerce'在结帐表之后,'bbloomer'有条件地隐藏\u显示\u账单\u密码\u iva',9999);
函数bbloomer\u有条件地\u隐藏\u显示\u计费\u代码\u iva(){
wc_enqueue_js(“jQuery('input#checkbox_trigger')。更改(函数(){
如果(!this.checked){
//如果未选中,则隐藏
jQuery(“#账单#密码(iva)字段”).fadeOut();
jQuery(“#账单#密码(iva)字段输入”).val(“”);
}否则{
//显示是否选中
jQuery(“#账单#codice_iva_字段”).fadeIn();
}
}).change();”;
}