Este código oculta el precio de un producto y la posibilidad de compra para usuarios/as que no están registrados en el sitio web (si lo deseas, cambia la información resaltada para adaptarla como quieras).
<?php
// Agrega filtro para no mostrar precio a usuarios sin registro
add_filter('woocommerce_get_price_html', 'ocultar_precio_para_no_registrados');
// Agrega filtro para no mostrar carrito a usuarios sin registro
add_filter('woocommerce_is_purchasable', 'ocultar_carrito_para_no_registrados');
// Función para no mostrar precio a usuarios sin registro
function ocultar_precio_para_no_registrados($price) {
// Verificar si el usuario no ha iniciado sesión
if (!is_user_logged_in()) {
// Estilos CSS para el mensaje de aviso
$style = '
<style>
.notice-woocommerce {
background-color: #f1f1f1;
border: 1px solid #ddd;
margin: 25px 0;
padding: 20px;
}
.notice-woocommerce a {
color: #1795e6;
text-decoration: underline;
}
</style>
';
// Mensaje de aviso para usuarios no registrados
$message = '<div class="notice-woocommerce"><p>Precio disponible únicamente para usuarios/as con registro <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 sin registro
function ocultar_carrito_para_no_registrados($purchasable) {
// Devuelve 'true' si el usuario está registrado. Sino, devuelve 'false'
return is_user_logged_in() ? $purchasable : false;
}