¡Únase a nosotros y descubra un mundo nuevo!

Regístrese ahora para comenzar a discutir, compartir y conectarse con otros internautas de la comunidad.

¡Esperamos contar con su participación en el foro!


REGISTRARME!

Tutorial Códigos de interés para Woocommerce

Ciudadano Digital
Miembro del equipo
Coordinador
Embajador
Registrado
9 Oct 2023
Mensajes
156
Hola, ¿como están todos? espero que genial. Hoy os traigo una serie de códigos que os puede servir de mucha ayuda para añadir funciones que no se pueden hacer desde el plugin Woocommerce.

Primero, debemos descargar un plugin que nos permita introducir código fácilmente en el header de nuestra web, podéis utilizar Code Snippets. O añadiéndolo en el archivo function.php de tu tema.

Dentro de Code Snippets insertamos estos códigos en el apartado PHP y le pondremos un título, además seleccionamos la pestaña de reproducirlos en todos los sitio. Y ya estarán disponibles.

Ahora os dejaré una serie de códigos para que lo tengáis como accesos rápidos por si los necesitáis.


AÑADIR UNA CASILLA DE CONFIRMACIÓN DE CONTRASEÑA EN "REGISTRO WOOCOMMERCE"

PHP:
// ----- validate password match on the registration page
function registration_errors_validation($reg_errors, $sanitized_user_login, $user_email) {
    global $woocommerce;
    extract( $_POST );
    if ( strcmp( $password, $password2 ) !== 0 ) {
        return new WP_Error( 'registration-error', __( 'Las contraseñas no coinciden.', 'woocommerce' ) );
    }
    return $reg_errors;
}
add_filter('woocommerce_registration_errors', 'registration_errors_validation', 10,3);

// ----- add a confirm password fields match on the registration page
function wc_register_form_password_repeat() {
    ?>
    <p class="form-row form-row-wide">
        <label for="reg_password2"><?php _e( 'Confirma la contraseña', 'woocommerce' ); ?> <span class="required">*</span></label>
        <input type="password" class="input-text" name="password2" id="reg_password2" value="<?php if ( ! empty( $_POST['password2'] ) ) echo esc_attr( $_POST['password2'] ); ?>" />
    </p>
    <?php
}
add_action( 'woocommerce_register_form', 'wc_register_form_password_repeat' );

// ----- Validate confirm password field match to the checkout page
function lit_woocommerce_confirm_password_validation( $posted ) {
    $checkout = WC()->checkout;
    if ( ! is_user_logged_in() && ( $checkout->must_create_account || ! empty( $posted['createaccount'] ) ) ) {
        if ( strcmp( $posted['account_password'], $posted['account_confirm_password'] ) !== 0 ) {
            wc_add_notice( __( 'Lascontraseñas no coinciden.', 'woocommerce' ), 'error' );
        }
    }
}
add_action( 'woocommerce_after_checkout_validation', 'lit_woocommerce_confirm_password_validation', 10, 2 );

// ----- Add a confirm password field to the checkout page
function lit_woocommerce_confirm_password_checkout( $checkout ) {
    if ( get_option( 'woocommerce_registration_generate_password' ) == 'no' ) {

        $fields = $checkout->get_checkout_fields();

        $fields['account']['account_confirm_password'] = array(
            'type'              => 'password',
            'label'             => __( 'Confirmar contraseña', 'woocommerce' ),
            'required'          => true,
            'placeholder'       => _x( 'Confirmar contraseña', 'placeholder', 'woocommerce' )
        );

        $checkout->__set( 'checkout_fields', $fields );
    }
}
add_action( 'woocommerce_checkout_init', 'lit_woocommerce_confirm_password_checkout', 10, 1 );



CAMBIAR CSS DEL EMAIL DE WOOCOMMERCE (CAMBIAR EL EMAIL POR DEFECTO)
PHP:
add_filter( 'woocommerce_email_styles', 'bbloomer_add_css_to_emails', 9999, 2 );
 
function bbloomer_add_css_to_emails( $css, $email ) {
  $css .= '
  #template_container {
  background-color: #fff;
  box-shadow: 5px 10px 20px #dedede !important;
  border: none; }
  #template_header_image {
  width: 200px;
  margin-bottom: 16px; }
  ';
  return $css;
}



HISTORIAL DE COMPRAR DEL CLIENTE
PHP:
add_action( 'edit_user_profile', function( $profileuser ) {
    if( ! current_user_can( 'administrator' ) ) { return; }
    $orderhistory = get_posts( [
        'numberposts' => -1,
        'meta_key' => '_customer_user',
        'meta_value' => $profileuser->ID,
        'post_type' => wc_get_order_types(),
        'post_status' => array_keys( wc_get_order_statuses() ),
    ] );
    ?>
    <table class="form-table">
        <tr>
            <th>Historial de pedidos</th>
            <td>
                <?php
                foreach( $orderhistory as $post ) {
                    $order = wc_get_order( $post->ID );
                    echo sprintf(
                        '<div>Order <a href="post.php?post=%d&action=edit">%s</a> (%s)</div>',
                        $post->ID, $order->get_order_number(), $order->get_status()
                    );
                }
                ?>
            </td>
        </tr>
    </table>
    <?php
} );



METATAG PARA FORMULARIOS DISPOSITIVOS MÓVILES (QUE LA PANTALLA NO AUMENTE CUANDO SELECCIONAMOS UN FORMULARIO EN MÓVIL)

¡Este lo introduciremos como HTML! Aunque sea HTML lo pongo por aquí 👌👌.

HTML:
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"/>

¡¡ESPERO QUE LES SIRVA!!
 
Última edición:
Colaborador
Miembro del equipo
Coordinador
Embajador
Registrado
9 Oct 2023
Mensajes
220
Muchas gracias por los codigos, siempre es bueno poner codigoa mano sin tantos plugins. excelente aporte :)
 
Ciudadano Digital
Miembro del equipo
Coordinador
Embajador
Registrado
9 Oct 2023
Mensajes
156
Muchas gracias por los codigos, siempre es bueno poner codigoa mano sin tantos plugins. excelente aporte :)
Muchas gracias, si cuanto más código mejor, sin utilizar plugins. Mandaré mas de ellos.
 
Explorador Activo
Registrado
29 Dic 2023
Mensajes
23
Hola, ¿como están todos? espero que genial. Hoy os traigo una serie de códigos que os puede servir de mucha ayuda para añadir funciones que no se pueden hacer desde el plugin Woocommerce.

Primero, debemos descargar un plugin que nos permita introducir código fácilmente en el header de nuestra web, podéis utilizar Code Snippets. O añadiéndolo en el archivo function.php de tu tema.

Dentro de Code Snippets insertamos estos códigos en el apartado PHP y le pondremos un título, además seleccionamos la pestaña de reproducirlos en todos los sitio. Y ya estarán disponibles.

Ahora os dejaré una serie de códigos para que lo tengáis como accesos rápidos por si los necesitáis.


AÑADIR UNA CASILLA DE CONFIRMACIÓN DE CONTRASEÑA EN "REGISTRO WOOCOMMERCE"

PHP:
// ----- validate password match on the registration page
function registration_errors_validation($reg_errors, $sanitized_user_login, $user_email) {
    global $woocommerce;
    extract( $_POST );
    if ( strcmp( $password, $password2 ) !== 0 ) {
        return new WP_Error( 'registration-error', __( 'Las contraseñas no coinciden.', 'woocommerce' ) );
    }
    return $reg_errors;
}
add_filter('woocommerce_registration_errors', 'registration_errors_validation', 10,3);

// ----- add a confirm password fields match on the registration page
function wc_register_form_password_repeat() {
    ?>
    <p class="form-row form-row-wide">
        <label for="reg_password2"><?php _e( 'Confirma la contraseña', 'woocommerce' ); ?> <span class="required">*</span></label>
        <input type="password" class="input-text" name="password2" id="reg_password2" value="<?php if ( ! empty( $_POST['password2'] ) ) echo esc_attr( $_POST['password2'] ); ?>" />
    </p>
    <?php
}
add_action( 'woocommerce_register_form', 'wc_register_form_password_repeat' );

// ----- Validate confirm password field match to the checkout page
function lit_woocommerce_confirm_password_validation( $posted ) {
    $checkout = WC()->checkout;
    if ( ! is_user_logged_in() && ( $checkout->must_create_account || ! empty( $posted['createaccount'] ) ) ) {
        if ( strcmp( $posted['account_password'], $posted['account_confirm_password'] ) !== 0 ) {
            wc_add_notice( __( 'Lascontraseñas no coinciden.', 'woocommerce' ), 'error' );
        }
    }
}
add_action( 'woocommerce_after_checkout_validation', 'lit_woocommerce_confirm_password_validation', 10, 2 );

// ----- Add a confirm password field to the checkout page
function lit_woocommerce_confirm_password_checkout( $checkout ) {
    if ( get_option( 'woocommerce_registration_generate_password' ) == 'no' ) {

        $fields = $checkout->get_checkout_fields();

        $fields['account']['account_confirm_password'] = array(
            'type'              => 'password',
            'label'             => __( 'Confirmar contraseña', 'woocommerce' ),
            'required'          => true,
            'placeholder'       => _x( 'Confirmar contraseña', 'placeholder', 'woocommerce' )
        );

        $checkout->__set( 'checkout_fields', $fields );
    }
}
add_action( 'woocommerce_checkout_init', 'lit_woocommerce_confirm_password_checkout', 10, 1 );



CAMBIAR CSS DEL EMAIL DE WOOCOMMERCE (CAMBIAR EL EMAIL POR DEFECTO)
PHP:
add_filter( 'woocommerce_email_styles', 'bbloomer_add_css_to_emails', 9999, 2 );
 
function bbloomer_add_css_to_emails( $css, $email ) {
  $css .= '
  #template_container {
  background-color: #fff;
  box-shadow: 5px 10px 20px #dedede !important;
  border: none; }
  #template_header_image {
  width: 200px;
  margin-bottom: 16px; }
  ';
  return $css;
}



HISTORIAL DE COMPRAR DEL CLIENTE
PHP:
add_action( 'edit_user_profile', function( $profileuser ) {
    if( ! current_user_can( 'administrator' ) ) { return; }
    $orderhistory = get_posts( [
        'numberposts' => -1,
        'meta_key' => '_customer_user',
        'meta_value' => $profileuser->ID,
        'post_type' => wc_get_order_types(),
        'post_status' => array_keys( wc_get_order_statuses() ),
    ] );
    ?>
    <table class="form-table">
        <tr>
            <th>Historial de pedidos</th>
            <td>
                <?php
                foreach( $orderhistory as $post ) {
                    $order = wc_get_order( $post->ID );
                    echo sprintf(
                        '<div>Order <a href="post.php?post=%d&action=edit">%s</a> (%s)</div>',
                        $post->ID, $order->get_order_number(), $order->get_status()
                    );
                }
                ?>
            </td>
        </tr>
    </table>
    <?php
} );



METATAG PARA FORMULARIOS DISPOSITIVOS MÓVILES (QUE LA PANTALLA NO AUMENTE CUANDO SELECCIONAMOS UN FORMULARIO EN MÓVIL)

¡Este lo introduciremos como HTML! Aunque sea HTML lo pongo por aquí 👌👌.

HTML:
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"/>

¡¡ESPERO QUE LES SIRVA!!
Se te agradece, buscaba el de confirmar contraseña, excelente.
 
Ciudadano Digital
Miembro del equipo
Coordinador
Embajador
Registrado
9 Oct 2023
Mensajes
156
Muchas gracias @Cristina_24 , siempre es un placer ayudarles en todo laque sea posible! Cualquier cosa que puedas aportar al foro adelante! Además dude contar con nuestra ayuda siempre que lo necesites claro! Un abrazo!
 
Explorador
Registrado
4 Nov 2023
Mensajes
18
Muchas gracias por compartir ello 🎉 tienes de casualidad alguna imagen de como queda?
 
Arriba