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