Hacer que las páginas de WooCommerce sean accesibles solo para usuarios registrados
Tengo un sitio web usando WordPress y un comercio electrónico usando WooCommerce. Me gustaría que mi tienda (y todas sus páginas) sean visibles solo para usuarios que hayan iniciado sesión.
A través del plugin User Access Manager, he denegado el acceso a la página de la tienda, pero con un enlace directo a un producto etc. se puede acceder a esa página en particular de todos modos, incluso si el usuario no ha iniciado sesión.
¿Cómo puedo redirigir a los usuarios que no han iniciado sesión a otra página si intentan acceder a una página de WooCommerce?

Coloca esto en tu archivo functions.php
:
function wpse_131562_redirect() {
if (
! is_user_logged_in()
&& (is_woocommerce() || is_cart() || is_checkout())
) {
// siéntete libre de personalizar la siguiente línea según tus necesidades
wp_redirect(home_url());
exit;
}
}
add_action('template_redirect', 'wpse_131562_redirect');
¿Qué hace?
Verificamos si un usuario no conectado intenta ver una página de WooCommerce, y lo redirigimos a nuestra página de inicio.

Gracias por tu ayuda. ¿El archivo functions.php está en la carpeta de mi tema? ¿Y cómo puedo llamar a esta función desde la página de producto? Gracias :-)

Muchas gracias. Tu código funciona perfectamente para mí. Muchísimas gracias :)

Este no es el mejor método para redirigir a la página Mi Cuenta
. Es mejor obtener el enlace permanente de la página Mi Cuenta que configuraste en los ajustes de WooCommerce. De esta manera, cuando el enlace permanente cambie o tengas un sitio multilingüe, el enlace se seguirá recuperando correctamente. En resumen: es mejor no codificar de forma rígida los enlaces permanentes/slugs (o URLs en general). Un método mejor sería: wp_redirect( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) );
