Un utente ha chiesto
Categoria: Sviluppo con WordPress di WordPress
Domanda: WordPress, cassa woocommerce

Aggiungo campi personalizzati nella pagina di pagamento – casella di controllo e facendo clic su mostra 2 campi per la fattura – IVA Nome azienda e partita IVA. Vorrei chiedervi aiuto per la revisione del codice. Il codice va a functions.php e funziona bene.

<?php
//Add VAT Fields - Checkout
add_action('woocommerce_after_order_notes', 'checkout_my_custom_checkbox', 61);
function checkout_my_custom_checkbox( $checkout ) {
 
    echo '<div id="my-new-field"><h3>'.__('VAT invoice details: ').'</h3>';
 
    woocommerce_form_field( 'my_checkbox', array(
        'type'          => 'checkbox',
        'class'         => array('input-checkbox'),
        'label'         => __('Issue VAT invoice'),
        ), $checkout->get_value( 'my_checkbox' ));
 
    echo '</div>';
}
//Add VAT invoice details - Checkout
add_action( 'woocommerce_after_order_notes', 'checkout_vat_fields', 62 );
function checkout_vat_fields( $checkout ) {

    echo '<div id="checkout_vat_fields">';
    
    woocommerce_form_field( 'company_name', array(
        'type'          => 'text',
        'class'         => array( 'company-name-field form-row-wide') ,
        'label'         => __( 'Company name' ),
        'placeholder'   => __( 'Full name of the company' ),
        'required'      => true,
    ), $checkout->get_value( 'company_name' ));
    
    woocommerce_form_field( 'vat_number', array(
        'type'          => 'text',
        'class'         => array( 'vat-number-field form-row-wide') ,
        'label'         => __( 'VAT Number' ),
        'placeholder'   => __( 'Enter VAT number' ),
        'required'      => true,
    ), $checkout->get_value( 'vat_number' ));
    
    echo '</div>';
}

//Save checkbox value in the order meta
add_action('woocommerce_checkout_update_order_meta', 'checkout_my_custom_checkbox_update_order_meta');
 
function checkout_my_custom_checkbox_update_order_meta( $order_id ) {
    if ($_POST['my_checkbox']) update_post_meta( $order_id, '_my_checkbox', esc_attr($_POST['my_checkbox']));
}

//Save VAT details in the order meta
add_action( 'woocommerce_checkout_update_order_meta', 'vat_details_update_order_meta' );
function vat_details_update_order_meta( $order_id ) {
    
    if ( ! empty( $_POST['company_name'] ) ) {
        update_post_meta( $order_id, '_company_name', sanitize_text_field( $_POST['company_name'] ) );
    }
    if ( ! empty( $_POST['vat_number'] ) ) {
        update_post_meta( $order_id, '_vat_number', sanitize_text_field( $_POST['vat_number'] ) );
    }
}

// Display VAT invoice info - admin order
add_action( 'woocommerce_admin_order_data_after_billing_address', 'vat_checkbox_display_admin_order_meta', 10, 1 );
function vat_checkbox_display_admin_order_meta( $order ) {
 echo '<strong>' . __( 'VAT invoice', 'woocommerce' ) . ':</strong> ';
if (get_post_meta( $order->id, '_my_checkbox', true ) =='1')  { 
     echo 'Yes';
  } 
  else { 
      echo 'No';
  }
}

// Display VAT invoice details - admin order
add_action( 'woocommerce_admin_order_data_after_billing_address', 'vat_number_display_admin_order_meta', 10, 1 );
function vat_number_display_admin_order_meta( $order ) {
    echo '<p><strong>' . __( 'Company name', 'woocommerce' ) . ':</strong> ' . get_post_meta( $order->id, '_company_name', true ) . '</p>';
    echo '<p><strong>' . __( 'VAT number', 'woocommerce' ) . ':</strong> ' . get_post_meta( $order->id, '_vat_number', true ) . '</p>';
}

//Show hide VAT fields
add_action( 'woocommerce_after_checkout_form', 'hide_show_vat_invoice', 999 );
function hide_show_vat_invoice() {
    
  wc_enqueue_js( "jQuery('input#my_checkbox').change(function(){
           if (! this.checked) {
            // hide not checked
            jQuery('#checkout_vat_fields').hide();     
         } else {
            // show checked
            jQuery('#checkout_vat_fields').show();
         }
           
      }).change();");       
}

  • Moderatore

    (@bcworkz)

    Non vedo nulla di allarmante a una lettura veloce. Tutto sembra molto ben fatto. Buon lavoro!

    Hai testato con WP_DEBUG definito come true, o almeno controllare il registro degli errori per eventuali avvisi o avvisi emessi? Può catturare cose che mi mancherebbero durante la lettura. Non mi aspetto niente, ma non si sa mai…

    (@ alice23)

    Grazie per le tue gentili parole e il tuo aiuto. Debug verificato e 0 errori/avvisi.

Hai risolto il tuo problema?

0 / 0

Lascia un commento 0

Il tuo indirizzo email non sarà pubblicato. Required fields are marked *