Plugins y algunos trucos para WP

Custom Fields o campos personalizados en Woocomerce, ejemplo CIF/NIF

Custom Fields o campos personalizados en Woocomerce, ejemplo CIF/NIF

 

////////18-7-2016—–NO FUNCIONA CON LA NUEVA VERSIÓN DE WOOCOMMERCE—– 18-7-2016/////////////

 

Como no hay manera de añadir el campo CIF/NIF en los datos de pedido de Woocomerce sólo nos quedan dos maneras de hacerlo.

-Pagar los 49 dólares para descargar el plugin woocommerce-checkout-field-editor o bien arriesgarnos a tocar código.

En mi caso me urge crear un campo personalizado CIF/NIF para poder generar después las facturas.

Pasos necesarios, (todo los códigos se añaden al archivo functions.php)

<?php
/**
 * Añadir el campo cuando se hace el pedido. Por defecto lo hará a continuación de los datos actuales
 **/
add_action('woocommerce_after_order_notes', 'my_custom_checkout_field');

function my_custom_checkout_field( $checkout ) {

    echo '<div id="my_custom_checkout_field"><h2>'.__('CIF/NIF').'</h2>';

    woocommerce_form_field( 'CIF/NIF', array(
        'type'          => 'text',
        'class'         => array('my-field-class form-row-wide'),
        'placeholder'       => __('Introduzca el CIF/NIF'),
        ), $checkout->get_value( 'CIF/NIF' ));

    echo '</div>';

}

/**
 * Comprobación de que no se deja en blanco, omitir si es un campo opcional
 **/
add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');

function my_custom_checkout_field_process() {
    global $woocommerce;

    
    if (!$_POST['CIF/NIF'])
         $woocommerce->add_error( __('RELLENE EL CIF/NIF.') );
}

/**
 * Actualizar el campo personalizado en la base de datos
 **/
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['CIF/NIF']) update_post_meta( $order_id, 'CIF/NIF', esc_attr($_POST['CIF/NIF']));
}

/**
* Visualizarlo en la orden del pedido
**/
add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );
 
function my_custom_checkout_field_display_admin_order_meta($order){
echo '<p><strong>'.__('CIF/NIF').':</strong> ' . $order->order_custom_fields['CIF/NIF'][0] . '</p>';
}?>

Con todo esto tendremos el campo CIF/NIF para introducir como campo obligatorio, y una vez se haga el pedido, al ir a la orden que se genera, lo tendremos como dato de facturación. Para poder modificarlo desde esta página, en la parte de abajo podremos modificarlo desde el desplegable de campo personalizado.

¿Que más faltaría? Quizás cambiar el lugar donde aparece el campo para rellenar, y que se enviase tambien por Email al cliente…pero eso ya es otra historia.

Custom Fields o campos personalizados en Woocomerce, ejemplo CIF/NIF
5 (100%) 1 vote

6 Respuestas to “Custom Fields o campos personalizados en Woocomerce, ejemplo CIF/NIF”

  1. Jesús dice:

    En que archivo functions.php el de woocomerce, el de la plantilla?

  2. admin dice:

    Hola Jesus,
    desde el panel de WordPress, apariencia, editor. Allí busca el archivo functions.php. Verá algunas lineas del tipo “Start WooThemes Functions” y más abajo “Load the theme-specific files”, más abajo, tras “/* You can add custom functions below */” pon el código de arriba. Por si acaso antes de nada haz una copia de seguridad, o copia el contenido en un archivo de texto, por si acaso.
    Espero que te funcione, suerte!

  3. Carlos dice:

    Acabo de probarlo y no funciona, pantalla en blanco..menos mal que hice copia de seguridad como bien indicabas!! ¿alguna solución?

  4. Carlos dice:

    Gracias!! me ha funcionado perfectamente, maravilloso!!

Dejar una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Powered by WordPress | Designed by Elegant ThemesPolítica de privacidad