Hacer que las páginas de WooCommerce sean accesibles solo para usuarios registrados

29 ene 2014, 00:05:41
Vistas: 37.2K
Votos: 13

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?

0
Todas las respuestas a la pregunta 3
3
28

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.

29 ene 2014 00:13:23
Comentarios

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 :-)

Alessandro Alessandro
29 ene 2014 10:30:46

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

Alessandro Alessandro
29 ene 2014 11:45:59

Asegúrate de no configurar ninguna de las páginas de WooCommerce como tu página de inicio, porque entonces el sitio dejará de funcionar.

SPRBRN SPRBRN
13 nov 2017 11:23:57
2
10

Acabo de cambiar la redirección a

wp_redirect( site_url('my-account/') )

para que los usuarios sean redirigidos a la página "Mi Cuenta" si no han iniciado sesión o no están registrados.

18 nov 2015 13:28:39
Comentarios

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' ) ) );

Rens Tillmann Rens Tillmann
2 mar 2018 21:25:29

a tu código le falta el ; al final

user889030 user889030
6 feb 2019 20:52:46
1

Yo cambiaría a esto

wp_safe_redirect( wc_get_page_permalink( 'myaccount' ) );

en lugar de

wp_redirect( site_url('my-account/') );
5 feb 2020 09:30:07
Comentarios

¿Podrías elaborar por qué esto ayudaría, para que otras personas puedan aprender algo de tu respuesta?

Krzysiek Dróżdż Krzysiek Dróżdż
5 feb 2020 10:11:55