Title: Guardar valor de checkbox
Last modified: 23 de febrero de 2021

---

# Guardar valor de checkbox

 *  Resuelto [nuevaenword](https://es.wordpress.org/support/users/nuevaenword/)
 * (@nuevaenword)
 * [hace 5 años, 7 meses](https://es.wordpress.org/support/topic/guardar-valor-de-checkbox/)
 * Buenas tardes. He colocado un checkbox en el archivo «functions.php» de mi child
   theme para que el cliente marque la casilla en caso de que quiera recibir la 
   factura por correo electrónico. Quiero que me guarde el valor de esa casilla 
   en la orden de compra. Es decir que si ha marcado la casilla tiene que mostrarme
   el mensaje «Deseo recibir la factura por correo electrónico». Esto último no 
   lo consigo. A continuación pego el fragmento de código que estoy utilizando. 
   Gracias de antemano.
 * Un saludo 🙂
 * »
 *     ```
       /**
       * Añadir un checkbox al final de la página de finalizar compra
       **/
       add_action('woocommerce_after_order_notes', 'my_custom_checkout_field');
   
       function my_custom_checkout_field( $checkout ) {
   
       woocommerce_form_field( 'my_checkbox', array(
       'type' => 'checkbox',
       'class' => array('input-checkbox'),
       'label' => __('Deseo recibir mi factura por correo electrónico'), // Pon el mensaje despues de la caja o checkbox
       'required' => false, // Pon true si quieres que sea obligatorio y false para opcional
       ), $checkout->get_value( 'my_checkbox' ));
       }
   
       /**
       * Acciones extras
       **/
       add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');
   
       function my_custom_checkout_field_process() {
       global $woocommerce;
   
       // Menaje de error si pusiste true. Lo he comentado porque el campo no es requerido y me daba error.
       /**if (!$_POST['my_checkbox'])
       $woocommerce->add_error( __('Por favor completa el campo de...') ); // Cambia aquí el mensaje**/
       }
   
       /**
       * Campo personalizado para el checkout
       **/
       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_checkbox']) update_post_meta( $order_id, 'Deseo recibir mi factura por correo electrónico', esc_attr($_POST['my_checkbox'])); // Cambia aquí el nombre del campo
       }
       ```
   
 * «

Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)

 *  [Oscar Abad Folgueira](https://es.wordpress.org/support/users/oabadfol/)
 * (@oabadfol)
 * [hace 5 años, 7 meses](https://es.wordpress.org/support/topic/guardar-valor-de-checkbox/#post-12195407)
 * Muy buenas [@nuevaenword](https://es.wordpress.org/support/users/nuevaenword/)
 * Prueba con este código:
 *     ```
       // Añadir un campo checkbox al checkout y al anadir_estado_pedido_enviado_a_estados
       add_action( 'woocommerce_review_order_before_submit', 'anadir_campo_checkbox_checkout' );
       function anadir_campo_checkbox_checkout() {
           echo '<div id="campo-factura-pdf">';
   
           woocommerce_form_field( 'cliente_quiere_factura', array(
               'type'      => 'checkbox',
               'class'     => array('input-checkbox'),
               'label'     => __('¿Deseas recibir la factura por correo electrónico?'),
           ),  WC()->checkout->get_value( 'cliente_quiere_factura' ) );
           echo '</div>';
       }
   
       // Guardar el campo del checkout en los meta del pedido, cuando se ha checkeado el checkbox
       add_action( 'woocommerce_checkout_update_order_meta', 'actualizar_meta_campo_checkout_factura', 10, 1 );
       function actualizar_meta_campo_checkout_factura( $order_id ) {
   
           if ( ! empty( $_POST['cliente_quiere_factura'] ) )
               update_post_meta( $order_id, 'cliente_quiere_factura', $_POST['cliente_quiere_factura'] );
       }
   
       // Mostrar el resultado del campo checkout en el admin del pedido
       add_action( 'woocommerce_admin_order_data_after_billing_address', 'mostrar_campo_checkout_detalles_pedido_admin', 10, 1 );
       function mostrar_campo_checkout_detalles_pedido_admin( $order ){
           $cliente_quiere_factura = get_post_meta( $order->get_id(), 'cliente_quiere_factura', true );
           if( $cliente_quiere_factura == 1 ) {
               echo '<p><strong>¿Quiere factura por email?: </strong> <span style="color:red;">SI</span></p>';
       		} else {
       				echo '<p><strong>¿Quiere factura por email?: </strong> <span style="color:black;">NO</span></p>';
       		}
       }
       ```
   
 * Yo lo he testeado con WooCommerce 5 y funciona.
 * Ya me cuentas a ver qué tal.
 * Saludos.
 *  Iniciador del debate [nuevaenword](https://es.wordpress.org/support/users/nuevaenword/)
 * (@nuevaenword)
 * [hace 5 años, 7 meses](https://es.wordpress.org/support/topic/guardar-valor-de-checkbox/#post-12195519)
 * ¡Impresionante! Muchísimas gracias. Ahora necesitaría que las facturas creadas
   con «WooCommerce PDF Invoices and Packing Slips», se enviaran únicamente a los
   clientes que hubieran marcado esa casilla. ¿Alguna idea? Gracias de antemano.
 * Un saludo 🙂
 *  [Oscar Abad Folgueira](https://es.wordpress.org/support/users/oabadfol/)
 * (@oabadfol)
 * [hace 5 años, 7 meses](https://es.wordpress.org/support/topic/guardar-valor-de-checkbox/#post-12195523)
 * Ya sabía yo que esto no quedaría aquí. Jajaja…
 * Bueno, si te parece cerramos este hilo y lo que puedes hacer antes de nada, es
   lanzar esta consulta en el foro de soporte del plugin que comentas.
 * No es por nada pero es algo que igual allí te lo resuelven antes que yo porque
   seguro que controlan bien el plugin en cuestión.
 * De todas formas, si quieres comentar por aquí el resultado, perfecto.
 * Venga, mucho ánimo!
 *  Iniciador del debate [nuevaenword](https://es.wordpress.org/support/users/nuevaenword/)
 * (@nuevaenword)
 * [hace 5 años, 7 meses](https://es.wordpress.org/support/topic/guardar-valor-de-checkbox/#post-12195533)
 * Se me ha visto el plumero. Me has calado ja, ja, ja. Me has ayudado muchísimo.
   Voy a hacer lo que me dices. Que pases un buen finde.
 * Un saludo 🙂
 *  [Oscar Abad Folgueira](https://es.wordpress.org/support/users/oabadfol/)
 * (@oabadfol)
 * [hace 5 años, 7 meses](https://es.wordpress.org/support/topic/guardar-valor-de-checkbox/#post-12195535)
 * Jajaja…
 * Cuando puedas, da por cerrada la consulta, porfa..
 * Saludos y mucho ánimo!!
 *  Iniciador del debate [nuevaenword](https://es.wordpress.org/support/users/nuevaenword/)
 * (@nuevaenword)
 * [hace 5 años, 7 meses](https://es.wordpress.org/support/topic/guardar-valor-de-checkbox/#post-12195837)
 * Hola Oscar. Disculpa. Tengo un problemilla. Cuando el cliente no marca la casilla
   no se me genera la factura y necesito que se genere siempre por motivos administrativos.¿
   Alguna idea? Gracias de antemano.
 * Un saludo 🙂
 *  [Oscar Abad Folgueira](https://es.wordpress.org/support/users/oabadfol/)
 * (@oabadfol)
 * [hace 5 años, 7 meses](https://es.wordpress.org/support/topic/guardar-valor-de-checkbox/#post-12195840)
 * Muy buenas [@nuevaenword](https://es.wordpress.org/support/users/nuevaenword/)
 * Ya te comenté que dejaras tu consulta en el plugin en cuestión porque ellos te
   van a poder ayudar mucho mejor.
 * De todas formas, es algo que no es tan sencillo sin conocer bien el plugin porque
   no sé como tiene en cuenta a la hora de generar las facturas pdf.
 * Como te digo, lanza tu consulta en el foro de ese plugin.
 * Saludos.

Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)

 El debate ‘Guardar valor de checkbox’ está cerrado a nuevas respuestas.

 * En: [WooCommerce](https://es.wordpress.org/support/forum/plugins-y-hacks/woocommerce/)
 * 7 respuestas
 * 2 participantes
 * Última respuesta de: [Oscar Abad Folgueira](https://es.wordpress.org/support/users/oabadfol/)
 * Última actividad: [hace 5 años, 7 meses](https://es.wordpress.org/support/topic/guardar-valor-de-checkbox/#post-12195840)
 * Estado: resuelto

## Debates

### Debates populares

### Debates sin respuestas

### Debates que no son soporte

### Debates resueltos

### Debates no resueltos

### Todos los debates
