Esta semana en Noches WordPress, vimos cómo incluir el RFC en el checkout, cómo verlo desde Admin, y cómo incluirlo en algún email que se envía relacionado al pedido.
Dejo también el video en youtube
El código puede incluirse en el functions.php del child theme
/** * ----------------------------------------------------- * 1. En checkout mostramos el RFC * ----------------------------------------------------- * */ add_action( 'woocommerce_after_checkout_billing_form', 'urano_add_rfc_field_to_checkout' ); function urano_add_rfc_field_to_checkout( $checkout ) { $current_user = wp_get_current_user(); $saved_rfc = get_user_meta ($current_user, 'user_rfc', true); woocommerce_form_field( 'user_rfc_check', array( 'type' => 'checkbox', 'class' => array('user_rfc_check', 'form-row input', 'form-row'), 'label' => __('Necesita Factura?'), 'required' => false )); woocommerce_form_field( 'user_rfc', array( 'type' => 'text', 'class' => array('user_rfc', 'form-row input', 'form-row', 'hidden'), 'label' => __('RFC'), 'placeholder' => __('rfc'), 'required' => false ), $saved_rfc ); } /** * ----------------------------------------------------- * 2. guardamos la información de RFC a nivel Orden - Pedido * Se podría guardar a nivel user, pero Woocommerce puede * no pedir o crear un user para comprar * ----------------------------------------------------- * * */ add_action( 'woocommerce_checkout_update_order_meta', 'urano_update_rfc', 10, 2); function urano_update_rfc($order_id, $post_values) { if ( $order_id && $_POST['user_rfc'] ) { $rfc = sanitize_text_field( $_POST['user_rfc'] ); update_post_meta ($order_id, 'user_rfc', $rfc); } } /** * 3 Mostramos el RFC en el área Admin de Pedidos */ add_action( 'woocommerce_admin_order_data_after_billing_address', 'urano_despliega_rfc', 10, 1 ); function urano_despliega_rfc( $order ) { $valor = get_post_meta( $order->get_order_number(), 'user_rfc', true ); if ($valor){ echo '<p><strong>'.__('RFC ').':</strong> ' . get_post_meta( $order->get_order_number(), 'user_rfc', true ) . '</p>'; } else { echo '<p><strong>'.__('Sin RFC para factura').'</strong> </p>'; } } /** * 4 Incluimos el RFC en el email que se envía al cliente */ add_filter('woocommerce_email_order_meta', 'urano_add_row_email', 10, 4); function urano_add_row_email( $order, $sent_to_admin, $plain_text, $email){ $value = get_post_meta($order->get_order_number(), 'user_rfc', true ); if ($value){ echo "RFC: $value "; }else{ echo "Puede pedir su factura fiscal en el 55591111 durante los siguiente 5 días<br>"; } } /*** * Script para mostrar / ocultar el RFC, de acuerdo al check */ add_action( 'woocommerce_after_checkout_form', 'urano_conditionally_hide_show_new_field', 6); function urano_conditionally_hide_show_new_field() { ?> <script type="text/javascript"> jQuery('input#user_rfc_check').change(function(){ if (!this.checked) { jQuery('#user_rfc_field').addClass('hidden'); } else { jQuery('#user_rfc_field').removeClass('hidden'); } }); </script> <?php }