El código presentado está diseñado para personalizar la experiencia de usuario en un entorno de comercio electrónico, específicamente utilizando la plataforma WooCommerce en WordPress. Su objetivo principal es gestionar la visibilidad del precio y la capacidad de agregar productos al carrito en función del estado de inicio de sesión del usuario.
Funcionalidad Principal:
La implementación se basa en el uso de filtros de WooCommerce, centrándose en dos aspectos clave. Primero, oculta el precio de los productos cuando un usuario no ha iniciado sesión, presentando un mensaje de aviso estilizado que sugiere la creación de una cuenta. Segundo, restringe la capacidad de agregar productos al carrito para usuarios no autenticados, alentando así la registración para acceder a todas las funcionalidades.
Posibles Casos de Uso:
- Incentivar el Registro:
- La ocultación del precio puede ser estratégica para motivar a los visitantes a registrarse, proporcionando una experiencia de compra completa solo para usuarios autenticados.
- Exclusividad para Miembros:
- Sitios que ofrecen beneficios exclusivos, como descuentos o promociones, a usuarios registrados pueden utilizar esta técnica para resaltar la exclusividad de la membresía.
- Controlar Acceso a Funcionalidades:
- Restringir la capacidad de agregar productos al carrito para usuarios no registrados permite a los propietarios de sitios dirigir la experiencia del usuario y fomentar el registro.
- Personalización de Ofertas:
- La información recopilada a través del registro puede utilizarse para personalizar ofertas y promociones, mejorando la retención de clientes.
En resumen, este código proporciona flexibilidad y adaptabilidad a diversos casos de uso en sitios de comercio electrónico, mejorando la interacción del usuario y fomentando la participación activa a través de la creación de cuentas registradas.

El siguiente código tienes que agregarlo en el functions.php de tu tema hijo o utilizar un plugin como CODE SNIPPETS.
<?php
// Agregar filtro para ocultar el precio a usuarios no registrados
add_filter('woocommerce_get_price_html', 'ocultar_precio_para_no_registrados');
// Agregar filtro para ocultar el carrito a usuarios no registrados
add_filter('woocommerce_is_purchasable', 'ocultar_carrito_para_no_registrados');
// Función para ocultar el precio a usuarios no registrados
function ocultar_precio_para_no_registrados($price) {
// Verificar si el usuario no ha iniciado sesión
if (!is_user_logged_in()) {
// Estilo CSS para el mensaje de aviso
$style = '
<style>
.notice-woocommerce {
background-color: #f2f2f2;
border: 1px solid #ddd;
margin: 20px 0;
padding: 15px;
}
.notice-woocommerce a {
color: #0073aa;
text-decoration: underline;
}
</style>
';
// Mensaje de aviso para usuarios no registrados
$message = '<div class="notice-woocommerce"><p>Precio disponible solo para usuarios registrados. <a href="' . get_permalink(get_option('woocommerce_myaccount_page_id')) . '">Inicia sesión o Regístrate</a></p></div>';
// Imprimir el estilo y el mensaje de aviso
echo $style;
return $message;
}
// Devolver el precio normal si el usuario está registrado
return $price;
}
// Función para ocultar el carrito a usuarios no registrados
function ocultar_carrito_para_no_registrados($purchasable) {
// Devolver true si el usuario está registrado, de lo contrario, devolver false
return is_user_logged_in() ? $purchasable : false;
}
Lenguaje del código: HTML, XML (xml)
Entendiendo el Código
- Filtros de WooCommerce:
- Se utilizan dos filtros de WooCommerce:
woocommerce_get_price_htmlywoocommerce_is_purchasable. - Estos filtros permiten modificar la forma en que se muestra el precio y determinar si un producto es comprable.
- Se utilizan dos filtros de WooCommerce:
- Función
ocultar_precio_para_no_registrados:- Recibe el precio actual del producto como parámetro.
- Verifica si el usuario ha iniciado sesión usando
is_user_logged_in(). - Si el usuario no ha iniciado sesión:
- Genera un bloque de estilo CSS para formatear el mensaje de aviso.
- Crea un mensaje que indica que el precio solo está disponible para usuarios registrados, con un enlace para iniciar sesión o registrarse.
- Imprime el bloque de estilo y devuelve el mensaje en lugar del precio original.
- Si el usuario ha iniciado sesión, devuelve el precio original sin modificaciones.
- Función
ocultar_carrito_para_no_registrados:- Recibe un parámetro booleano que indica si un producto es comprable.
- Utiliza
is_user_logged_in()para verificar si el usuario ha iniciado sesión. - Si el usuario ha iniciado sesión, devuelve el valor original de la comprabilidad del producto.
- Si el usuario no ha iniciado sesión, devuelve
false, lo que impide que se añadan productos al carrito.
- Estilo del Mensaje de Aviso:
- Se utiliza un bloque de estilo CSS para formatear el mensaje de aviso mostrado a los usuarios no registrados.
- El estilo define aspectos visuales como el color de fondo, el borde y el espaciado del mensaje de aviso, así como el estilo del enlace.
En resumen, el código utiliza filtros de WooCommerce y funciones personalizadas para ocultar el precio y restringir la capacidad de agregar productos al carrito para usuarios no registrados. Esto se logra mediante la manipulación dinámica del HTML y la lógica condicional basada en el estado de inicio de sesión del usuario.
Si necesitas adaptar el código a las necesidades de tu proyecto o agregar una funcionalidad específica a tu página web no dudes en contactar conmigo.
Nos vemos en el siguiente tutorial.
Un saludo.




Deja tus opiniones o dudas en los comentarios.