silver laptop computer beside white smartphone on brown wooden table

¿Cómo establecer precios por usuario en WooCommerce sin plugins y con código?

¿Alguna vez te haz preguntado como puedes establecer precios por usuario en WooCommerce? Bueno pues esta guía les será útil si desean ofrecer precios personalizados a sus clientes en función de sus roles de usuario o características específicas en tu Web.

Bienvenidos, apasionados de WordPress y WooCommerce. Como programador web especializado en estas plataformas y amante de compartir conocimientos, hoy les traigo un tutorial sobre cómo establecer precios por usuario en WooCommerce de manera programática. Esta guía les será útil si desean ofrecer precios personalizados a sus clientes en función de sus roles de usuario o características específicas. ¡Comencemos!

woman coding on computer
Photo by ThisIsEngineering on Pexels.com

Paso 1: Crear un plugin personalizado

Para mantener nuestro código limpio y organizado, vamos a crear un plugin personalizado. En el directorio wp-content/plugins de su instalación de WordPress, cree una nueva carpeta llamada woocommerce-custom-prices. Dentro de esta carpeta, cree un archivo PHP llamado woocommerce-custom-prices.php y agregue el siguiente código:

<?php
/**
 * Plugin Name: WooCommerce Custom Prices
 * Description: Establece precios personalizados por usuario en WooCommerce.
 * Author: [Su nombre]
 * Version: 1.0
 */
if (!defined('ABSPATH')) {
    exit; // Evitar el acceso directo a este archivo
}

Paso 2: Crear una función para establecer precios personalizados

A continuación, agregue una función en el archivo woocommerce-custom-prices.php que maneje la lógica para establecer precios personalizados por usuario. En este ejemplo, vamos a ofrecer un descuento del 10% a los usuarios con el rol “suscriptor”.

function set_custom_prices($price, $product) {
    // Obtener el usuario actual
    $current_user = wp_get_current_user();
    // Verificar si el usuario es un suscriptor
    if (in_array('subscriber', $current_user->roles)) {
        // Aplicar un descuento del 10%
        $price = $price * 0.9;
    }
    return $price;
}

Paso 3: Vincular la función al filtro adecuado

Para aplicar nuestra función a los precios de los productos en WooCommerce, utilizaremos el filtro woocommerce_product_get_price. Agregue el siguiente código a continuación de la función set_custom_prices:

add_filter('woocommerce_product_get_price', 'set_custom_prices', 10, 2);

Código Completo

<?php
/**
 * Plugin Name: WooCommerce Custom Prices
 * Description: Establece precios personalizados por usuario en WooCommerce.
 * Author: Manuel Ramirez Coronel
 * Version: 1.0
 */
if (!defined('ABSPATH')) {
    exit; // Evitar el acceso directo a este archivo
}
function set_custom_prices($price, $product) {
    // Obtener el usuario actual
    $current_user = wp_get_current_user();
    // Verificar si el usuario es un suscriptor
    if (in_array('subscriber', $current_user->roles)) {
        // Aplicar un descuento del 10%
        $price = $price * 0.9;
    }
    return $price;
}
add_filter('woocommerce_product_get_price', 'set_custom_prices', 10, 2);

Paso 4: Activar el plugin

Finalmente, active el plugin desde la página de administración de plugins de su panel de WordPress. Ahora, los usuarios con el rol de “suscriptor” deberían recibir un 10% de descuento en todos los productos de su tienda WooCommerce.

Este es solo un ejemplo simple de cómo establecer precios personalizados por usuario en WooCommerce. Puede adaptar la función set_custom_prices para ajustar los precios según diferentes roles de usuario o características específicas de sus clientes.

Mejorando la funcionalidad: Precios personalizados basados en metadatos de usuario

Ahora que ya sabemos cómo establecer precios personalizados por rol de usuario, vamos a mejorar nuestra funcionalidad para que sea más flexible. En lugar de basar el descuento en el rol del usuario, vamos a permitir que los administradores establezcan un descuento específico para cada usuario mediante un campo personalizado en su perfil.

Paso 1: Agregar un campo personalizado en la página de perfil del usuario

Para agregar un campo personalizado en la página de perfil del usuario, utilizaremos la acción show_user_profile y edit_user_profile. Agregue el siguiente código en el archivo woocommerce-custom-prices.php:

function add_custom_user_discount_field($user) {
    $discount = get_user_meta($user->ID, 'custom_user_discount', true);
    ?>
    <h3>Descuento personalizado en WooCommerce</h3>
    <table class="form-table">
        <tr>
            <th><label for="custom_user_discount">Descuento (%)</label></th>
            <td>
                <input type="number" name="custom_user_discount" id="custom_user_discount" value="<?php echo esc_attr($discount); ?>" class="regular-text" /><br />
                <span class="description">Ingrese el porcentaje de descuento para este usuario (0-100).</span>
            </td>
        </tr>
    </table>
    <?php
}
add_action('show_user_profile', 'add_custom_user_discount_field');
add_action('edit_user_profile', 'add_custom_user_discount_field');

Paso 2: Guardar el valor del campo personalizado

Para guardar el valor del campo personalizado cuando se actualiza el perfil del usuario, utilizaremos la acción personal_options_update y edit_user_profile_update. Agregue el siguiente código en el archivo woocommerce-custom-prices.php:

function save_custom_user_discount_field($user_id) {
    if (!current_user_can('edit_user', $user_id)) {
        return false;
    }
    $discount = isset($_POST['custom_user_discount']) ? intval($_POST['custom_user_discount']) : 0;
    update_user_meta($user_id, 'custom_user_discount', $discount);
}
add_action('personal_options_update', 'save_custom_user_discount_field');
add_action('edit_user_profile_update', 'save_custom_user_discount_field');

Paso 3: Modificar la función de precios personalizados

Vamos a modificar nuestra función set_custom_prices para que aplique el descuento basado en el valor del campo personalizado en lugar del rol del usuario.

function set_custom_prices($price, $product) {
    // Obtener el usuario actual
    $current_user = wp_get_current_user();
    // Obtener el descuento personalizado del usuario
    $discount = get_user_meta($current_user->ID, 'custom_user_discount', true);
    if (!empty($discount) && is_numeric($discount) && $discount > 0) {
        // Calcular el precio con descuento
        $price = $price * (1 - $discount / 100);
    }
    return $price;
}

Con estos cambios, ahora los administradores podrán establecer un porcentaje de descuento específico para cada usuario desde la página de perfil de usuario. El descuento se aplicará automáticamente a todos los productos de la tienda WooCommerce para ese usuario.

Paso 4: Mostrar el descuento aplicado en la página del producto (opcional)

Para mejorar la experiencia del usuario, podemos mostrar el descuento aplicado en la página del producto. Para ello, utilizaremos la acción woocommerce_single_product_summary. Agregue el siguiente código en el archivo woocommerce-custom-prices.php:

function display_user_discount() {
    global $product;
    // Obtener el usuario actual
    $current_user = wp_get_current_user();
    // Obtener el descuento personalizado del usuario
    $discount = get_user_meta($current_user->ID, 'custom_user_discount', true);
    if (!empty($discount) && is_numeric($discount) && $discount > 0) {
        echo '<div class="woocommerce-user-discount">';
        echo '<p><strong>Descuento aplicado:</strong> ' . $discount . '%</p>';
        echo '</div>';
    }
}
add_action('woocommerce_single_product_summary', 'display_user_discount', 25);

Este código muestra el porcentaje de descuento aplicado en la página del producto para el usuario actual, justo después del precio del producto.

Conclusión

Con estos pasos, hemos creado una solución más avanzada y flexible para establecer precios personalizados por usuario en WooCommerce. Ahora los administradores pueden aplicar descuentos específicos a cada usuario, y los usuarios pueden ver sus descuentos aplicados en la página del producto.

Este tutorial solo es el comienzo de las posibilidades que ofrece la personalización de WooCommerce. Pueden seguir experimentando y adaptando estas funciones a las necesidades específicas de su tienda en línea.

Suscripción al Newsletter

Si estás interesado en aprender más sobre WordPress, no olvides suscribirte a nuestro blog para recibir las últimas noticias y consejos sobre WordPress, alojamiento web.

¿Necesitas un Hosting para tu Web?

Anuncio - Hosting Web de SiteGround - Diseñado para una fácil administración web. Haz clic para saber más.

Anuncio - Hosting Web de SiteGround - Diseñado para una fácil administración web. Haz clic para saber más.

¿Necesitas ayuda con un Proyecto Web o un Plugin a Medida?

Si ¿Necesitas ayuda con algún proyecto web? No dudes en contactarme desarrollo soluciones completas y personalizadas con WordPress y PHP, con herramientas y procesos modernos, utilizando HTML, CSS, SCSS, PHP, JavaScript, Bootstrap y más… Si ¿Estás listo? ¡Envíame un mensaje y hablemos de tu proyecto web!