Skip to content

Instantly share code, notes, and snippets.

@danielcharrua
Last active June 3, 2019 11:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danielcharrua/679f94c251ef28cc76323a128b9fe325 to your computer and use it in GitHub Desktop.
Save danielcharrua/679f94c251ef28cc76323a128b9fe325 to your computer and use it in GitHub Desktop.
Añade el campo NIF a WooCommerce, para facturación en España
/**
* Añade el campo NIF a la página de checkout de WooCommerce
*/
add_action( 'woocommerce_before_checkout_billing_form', 'agrega_mi_campo_personalizado' );
function agrega_mi_campo_personalizado( $checkout ) {
woocommerce_form_field( 'nif', array(
'type' => 'text',
'class' => array('my-field-class form-row-wide'),
'label' => __('NIF'),
'placeholder' => __('Ej: 99999999D'),
'required' => true,
), $checkout->get_value( 'nif' ));
}
/**
* Valida el campo en el checkout (Incluye un mensaje de validación)
*/
add_action('woocommerce_checkout_process', 'valida_campo_personalizado');
function valida_campo_personalizado() {
// Si esta vacío, enviamos el error
if ( ! $_POST['nif'] )
wc_add_notice( __( '<b>NIF</b> es un campo requerido.' ), 'error' );
}
/**
* Salva el campo a la orden
*/
add_action( 'woocommerce_checkout_update_order_meta', 'actualizar_campo_personalizado_order_meta' );
function actualizar_campo_personalizado_order_meta( $order_id ) {
if ( ! empty( $_POST['nif'] ) ) {
update_post_meta( $order_id, 'NIF', sanitize_text_field( $_POST['nif'] ) );
}
}
/**
* Muestra el valor del nuevo campo NIF en la página de edición del pedido
*/
add_action( 'woocommerce_admin_order_data_after_billing_address', 'mostrar_campo_personalizado_en_admin_pedido', 10, 1 );
function mostrar_campo_personalizado_en_admin_pedido($order){
echo '<p><strong>'.__('NIF').':</strong> ' . get_post_meta( $order->id, 'NIF', true ) . '</p>';
}
/**
* Incluye el campo NIF en el email de notificación del cliente
*/
add_filter('woocommerce_email_order_meta_keys', 'muestra_campo_personalizado_email');
function muestra_campo_personalizado_email( $keys ) {
$keys[] = 'NIF';
return $keys;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment