Budując sklepy internetowe, wiele razy napotykamy konieczność dodania nowego pola w zamówieniu, gdzie klient może podać NIP do faktury. Coraz częściej spotykamy się z sytuacja, kiedy klient chce otrzymać fakturę za towar, a zapomni dodać w wiadomości do sprzedającego swojego NIP’u. W tym artykule pokażę jak dodać pole NIP w formularzu zamówienia, w mailach potwierdzających zamówienie oraz w panelu zamówień.

Na początek otwieramy do edycji plik function.php, który znajduje się na naszym serwerze w katalogu /public_html/wp-content/temes/nasz-temat-graficzny

Pierwszym krokiem będzie dodanie akcji z funkcją tworzącą nowe pole o nazwie vat_number.

add_action( 'woocommerce_after_order_notes', 'pisak_vat_field' );
/**
* VAT Number in WooCommerce Checkout
*/
function pisak_vat_field( $checkout ) {
    echo '<div id="pisak_vat_field"><h2>' . __('Numer NIP') . '</h2>';
    
    woocommerce_form_field( 'vat_number', array(
        'type'          => 'text',
        'class'         => array( 'vat-number-field form-row-wide') ,
        'label'         => __( 'Numer NIP' ),
        'placeholder'   => __( 'Podaj numer NIP' ),
    ), $checkout->get_value( 'vat_number' ));
    
    echo '</div>';
}

Kolejnym krokiem jest zapisanie podanego numeru NIP do bazy danych.

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

Następnie poniższy kod pozwala na wyświetlenie numeru NIP w zamówieniach WooCommerce’a.

add_action( 'woocommerce_admin_order_data_after_billing_address', 'pisak_vat_number_display_admin_order_meta', 10, 1 );
/**
 * Display VAT Number in order edit screen
 */
function pisak_vat_number_display_admin_order_meta( $order ) {
    echo '<p><strong>' . __( 'Numer NIP', 'woocommerce' ) . ':</strong> ' . get_post_meta( $order->id, '_vat_number', true ) . '</p>';
}

Ostatnim krokiem jest dodanie numeru NIP do maili z zamówieniem.

add_filter( 'woocommerce_email_order_meta_keys', 'pisak_vat_number_display_email' );
/**
* VAT Number in emails
*/
function pisak_vat_number_display_email( $keys ) {
     $keys['Numer NIP'] = '_vat_number';
     return $keys;
}

Powyższy kod wklejamy w naszym pliku function.php, jeden pod drugim, zapisujemy plik i wysyłamy na serwer.