WooCommerce ci permette di aggiungere anche campi custom alla sua pagina di checkout.
In functions.php creiamo per prima cosa il campo che verrà visualizzato nella pagina di checkout:
add_action( 'woocommerce_after_order_notes', 'my_custom_checkout_field' );
function my_custom_checkout_field( $checkout ) {
echo '<div id="my-custom-checkout-field"><h2>' . __( 'Titolo del campo' ) . '</h2>';
woocommerce_form_field( 'my_field_name', array(
'type' => 'text',
'class' => array( 'my-field-class form-row-wide' ),
'label' => __( 'Testo della label '),
'placeholder' => __( 'Testo del placeholder' ),
), $checkout->get_value( 'my_field_name' ));
echo '</div>';
}
Quindi aggiungiamo la validazione:
add_action( 'woocommerce_checkout_process', 'my_custom_checkout_field_process' );
function my_custom_checkout_field_process() {
global $woocommerce;
// Verifichiamo che abbia un valore
if ( !$_POST['my_field_name'] ) {
$woocommerce->add_error( __( 'Messaggio di errore.' ) );
}
}
Infine salviamo il campo con l'ordine in corso:
add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' );
function my_custom_checkout_field_update_order_meta( $order_id ) {
if ( $_POST['my_field_name'] ) {
update_post_meta( $order_id, 'my-field-name', esc_attr( $_POST['my_field_name'] ) );
}
}