Soporte » Plugins y Hacks » WooCommerce » agregar campos personalizados en checkout woo con codigo

  • mary.pec

    (@marypec)


    Hola a todos espero esten muy bien bueno
    les cuento, por problemas de compatibilidad de plugin de envios no pude instalar ningun plugin para modificar la página del checkout de la tienda y me aventure a colocar codigo en el archivo function del theme para agregar los campos solicitados, el tema es que no se nada de codigo y buscando encontre algunos articulos de como agregar el nif y otros campos otros y copiando probando logre que se vieran los campos que necesitaba en en front end el problema es que la pagina del pedido no los logro visualizar solo en campos personalizados copio el codigo pido disculpas a los puristas de código.
    Me gustaría aprender pero no se donde o que curso pueda servirme.
    esto son los campos
    https://www.neuromav.cl/wp-content/uploads/2022/03/captura1.jpg
    Este es el codigo que agregue

    /**
     * Añade el campo Rut a la página de checkout de WooCommerce marzo-2022
     */
    add_action( 'woocommerce_after_order_notes', 'agrega_mi_campo_personalizado' );
     
    function agrega_mi_campo_personalizado( $checkout ) {
     
        echo '<div id="additional_checkout_field"><h2>' . __('Información adicional') . '</h2>';
     
        woocommerce_form_field( 'rut', array(
            'type'          => 'text',
            'class'         => array('my-field-class form-row-wide'),
            'label'         => __('RUT'),
            'placeholder'   => __('Ej: 99999999D'),
            ), $checkout->get_value( 'rut' ));
     
        echo '</div>';
    }
    /**
    /**
     * Actualiza la información del pedido con el nuevo campo
     */
    add_action( 'woocommerce_checkout_update_order_meta', 'actualizar_info_pedido_con_nuevo_campo_un' );
     
    function actualizar_info_pedido_con_nuevo_campo_un( $order_id ) {
        if ( ! empty( $_POST['rut'] ) ) {
            update_post_meta( $order_id, 'RUT', sanitize_text_field( $_POST['rut'] ) );
        }
    }
    
    /**
     * 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>'.__('RUT').':</strong> ' . get_post_meta( $order->id, 'RUT', 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[] = 'RUT';
        return $keys;
    }
    
    /**
     * Añade el campo profesion a la página de checkout de WooCommerce 03-2022
     */
    
    add_action('woocommerce_after_checkout_billing_form','agrega_mi_campo_personalizado_prof');
     
    function agrega_mi_campo_personalizado_prof( $checkout_on ) {
    
        woocommerce_form_field( 'profesion', array(
            'type'          => 'text',
            'class'         => array('my-field-class form-row-wide'),
            'label'         => __('Profesión'),
            'placeholder'   => __('Fonoaudiologo..'),
            ), $checkout_on->get_value( 'profesion' ));
    
    }
    /**
    * Funciones para agregar campos personalizados agrego campos selest-03-2022
    *Select
    */
    
    add_action('woocommerce_after_checkout_billing_form','claserama_add_select_prefered_contact_anexper');
    function claserama_add_select_prefered_contact_anexper($checkout_to){
        woocommerce_form_field('experiencia',array(
            'type' => 'select', //textarea, text,select, radio, checkbox, password
            'class' => array('form-row-wide'), // un array puede ser la clase 'form-row-wide', 'form-row-first', 'form-row-last'
            'label' => 'Años de Experiencia',
            'options' => array( //opciones para un select o un input radio
                '' => 'Selecciona uno',
                'egresado' => 'Recién egresado',
                'un_anio' => 'Un años',
                'dos_anio' => 'Dos años',
    	        'tres_anio' => 'Tres años',
    			'mas_anio' => 'Más años'
            )
            ), $checkout_to->get_value('experiencia')
        );
    }
    
    add_action('woocommerce_after_checkout_billing_form','claserama_add_select_prefered_conoc');
    
    function claserama_add_select_prefered_conoc($checkout){
        woocommerce_form_field('conocimiento',array(
            'type' => 'select', 
            'class' => array('form-row-wide'), 
            'label' => 'Nivel de Conocimiento',
            'options' => array( 
                '' => 'Selecciona uno',
    			'Muy_basico' => 'Muy Básico',
                'Basico' => 'Básico',
                'Intermedio' => 'Intermedio',
                'Avanzado' => 'Avanzado'
            )
            ), $checkout->get_value('conocimiento')
        );
    }
    	    
    /**
     * FIN DE Añade el campo profesion a la página de checkout de WooCommerce 03-2022
     */
    
    /**
     * Actualiza la información del pedido con el nuevo campo
     */
    add_action( 'woocommerce_checkout_update_order_meta', 'actualizar_info_pedido_con_nuevo_campo' );
     
    function actualizar_info_pedido_con_nuevo_campo( $order_id_on ) {
        if ( ! empty( $_POST['profesion'] ) ) {
            update_post_meta( $order_id_on, 'Profesión', sanitize_text_field( $_POST['profesion'] ) );
        }
    }
    
    add_action( 'woocommerce_checkout_update_order_meta', 'actualizar_info_pedido_con_nuevo_campo_to' );
     
    function actualizar_info_pedido_con_nuevo_campo_to( $order_id_to ) {
        if ( ! empty( $_POST['experiencia'] ) ) {
            update_post_meta( $order_id_to, 'Años de experiencia', sanitize_text_field( $_POST['experiencia'] ) );
        }
    }
    
    add_action( 'woocommerce_checkout_update_order_meta', 'actualizar_info_pedido_con_nuevo_campo_tre' );
     
    function actualizar_info_pedido_con_nuevo_campo_tre( $order_id_tre ) {
        if ( ! empty( $_POST['conocimiento'] ) ) {
            update_post_meta( $order_id_tre, 'Nivel de conocimiento', sanitize_text_field( $_POST['conocimiento'] ) );
        }
    }
    
    /**
     * FIN DE Actualiza la información del pedido con el nuevo campo
     */
    
    /**
    * Mostrar los valores de los campos personalizados adicionales en la vista de la orden en el administrador
    */
    add_action( 'woocommerce_admin_order_data_after_billing_address', 'mostrar_campo_personalizado_en_admin_pedido_one', 10, 1 );
    
    function mostrar_campo_personalizado_en_admin_pedido_one($order_on){
        echo '<p><strong>'.__('Profesión').':</strong> ' . get_post_meta( $order_on->id, 'profesion', true ) . '</p>';
    }
    add_action('woocommerce_admin_order_data_after_billing_address','mostrar_campo_personalizado_en_admin_pedido_to', 10, 1 );
    
    function mostrar_campo_personalizado_en_admin_pedido_to($order_to){
        echo '<p><strong>'.__('Años de Experiencia').':</strong> ' . get_post_meta( $order_to->id, 'experiencia',true) . '</p>';
    }
    add_action('woocommerce_admin_order_data_after_billing_address','mostrar_campo_personalizado_en_admin_pedido_tre', 10, 1 );
    
    function mostrar_campo_personalizado_en_admin_pedido_tre($order_tre){
        echo '<p><strong>'.__('Nivel de Conocimiento').':</strong> ' . get_post_meta( $order_tre->id, 'conocimiento',true ) . '</p>';
    }
    
    /**
    * FIN DE Mostrar los valores de los campos personalizados adicionales en la vista de la orden en el administrador
    */

    Pero no me esta agregando la información en esta zona
    https://www.neuromav.cl/wp-content/uploads/2022/03/Captura2.jpg

    Que pasa con el codigo. porque no funciona. para aprender.

    desde ya muchas gracias
    saludos

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

Viendo 1 respuesta (de un total de 1)
Viendo 1 respuesta (de un total de 1)
  • El debate ‘agregar campos personalizados en checkout woo con codigo’ está cerrado a nuevas respuestas.