• Resuelto carlosmdh

    (@carlosmdh)


    Buenas tardes.

    Os cuento, he personalizado un WooCommerce para incluir en el Checkout el campo de NIF/CIF usando unos Snippets, tanto para incluirlo en el Formulario del CheckOut como en los detalles del pedido, como en el mail de confirmación como, y aquí viene lo que no funciona del todo, en la página de visualización/modificación del pedido del Admin.

    Los códigos que he usado son los siguientes:

    /* Añadir el campo NIF/CIF al formulario de pago*/
    function xxx_woo_custom_field_checkout($checkout) {
      echo '<div id="additional_checkout_field">';
      woocommerce_form_field( 'nif', array( // Identificador del campo 
        'type'          => 'text',
        'class'         => array('my-field-class form-row-wide'),
        'required'      => true,            // ¿El campo es obligatorio 'true' o 'false'?
        'label'       => __('NIF / CIF'),   // Nombre del campo 
        'placeholder'   => __('Ej: 12345678X'), // Texto de apoyo que se muestra dentro del campo
      ), $checkout->get_value( 'NIF' ));    // Identificador del campo 
      echo '</div>'; 
    }
    add_action( 'woocommerce_after_checkout_billing_form', 'xxx_woo_custom_field_checkout' );
    
    /* Incluir el NIF/CIF en los detalles del pedido*/
    function xxx_woo_custom_field_checkout_update_order($order_id) {
      if ( ! empty( $_POST['nif'] ) ) {
        update_post_meta( $order_id, 'NIF', sanitize_text_field( $_POST['nif'] ) );
      }
    }
    add_action( 'woocommerce_checkout_update_order_meta','xxx_woo_custom_field_checkout_update_order' );
    /*Incluir el campo NIF/CIF en el email de aviso al cliente*/
    function xxx_woo_custom_field_checkout_email($keys) {
      $keys[] = 'NIF';
      return $keys;
    }
    add_filter('woocommerce_email_order_meta_keys','xxx_woo_custom_field_checkout_email');

    Y este es el que no funciona del todo:

    /* Mostrar la etiqueta y el campo NIF/CIF en la página de modificación del perdido en el admin de WordPress */
    
    function xxx_woo_custom_field_checkout_edit_order($order){
      echo '<p>'.__('NIF/CIF').':</strong> ' . get_post_meta( $order->id, 'NIF', true ) . '</p>';
    }
    add_action( 'woocommerce_admin_order_data_after_billing_address','xxx_woo_custom_field_checkout_edit_order', 10, 1 );

    Lo que muestra es el nombre del campo, y en caso de haber completado los datos del pedido desde la Web si muestra el valor, pero no es editable, solo lo muestra.

    Lo que me falta es poder editarlo para que, en el caso de meter un pedido desde el admin, pueda poner el CIF.

    Gracias y Feliz jueves

    • Este debate fue modificado hace 6 años por carlosmdh.
    • Este debate fue modificado hace 6 años por Fernando Tellado. Razón: Etiquetado del código
    • Este debate fue modificado hace 6 años por Fernando Tellado.

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • Moderador Fernando Tellado

    (@fernandot)

    Hola Carlos, entiendo que te sale el campo pero solo para visualizar, no editable, así:

    Prueba a sustituir en tu código $order->id por $order->get_id pues acceder directamente a los datos de producto con ides un procedimiento no admitido por WooCommerce.

    Iniciador del debate carlosmdh

    (@carlosmdh)

    Si el problema es ese.

    He probado a cambiarlo, pero no parece funcionar…

    :'(

    Iniciador del debate carlosmdh

    (@carlosmdh)

    Buenas
    Solucionado.

    He encontrado este plugin de Art Project Group

    https://es.wordpress.org/plugins/wc-apg-nifcifnie-field/

    Además de solucionar el tema de mostrar y poder editar el NIC/CIF en el BackOffice, valida el mismo en el FrontOffice.

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • El debate ‘Editar campo personalizado desde los detalles del pedido en el admin’ está cerrado a nuevas respuestas.