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


12

Tengo un sitio web con WordPress y un comercio electrónico con WooCommerce. Me gustaría que mi tienda (y todas sus páginas) sean vistas solo por usuarios registrados.

A través del complemento User Access Manager , he denegado el acceso a la página de la tienda, pero con un enlace directo a un producto, etc., no obstante, se puede acceder a esa página en particular, incluso si el usuario no ha iniciado sesión.

¿Cómo puedo redirigir a los usuarios, que no están conectados, a otra página si intentan acceder a una página de WooCommerce?

Respuestas:


24

Pon esto en tu functions.phparchivo:

function wpse_131562_redirect() {
    if (
        ! is_user_logged_in()
        && (is_woocommerce() || is_cart() || is_checkout())
    ) {
        // feel free to customize the following line to suit your needs
        wp_redirect(home_url());
        exit;
    }
}
add_action('template_redirect', 'wpse_131562_redirect');

¿Qué hace?
Verificamos si un usuario que no ha iniciado sesión quiere ver una página de WooCommerce y lo redireccionamos a nuestra página de inicio.


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

Muchas gracias. Tu código funciona bien para mí. Muchas muchas gracias :)
Alessandro

1
Asegúrese de no configurar ninguna de las páginas de woocommerce como su página de inicio, porque el sitio ya no funcionará.
SPRBRN

7

Acabo de cambiar la redirección a

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

para que los usuarios sean redirigidos en la página "Mi cuenta" si no están conectados o registrados.


2
Este no es el mejor método para redirigir a la My Accountpágina. Es mejor recuperar el enlace permanente de la página Mi cuenta que ha vinculado en la configuración de WooCommerce. De esta manera, siempre que se cambie el enlace permanente o tenga un sitio en varios idiomas que ejecute, el enlace permanente se recuperará correctamente. En resumen: es mejor no codificar enlaces permanentes / slugs (o URL en general). Un método mejor sería:wp_redirect( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) );
Rens Tillmann

tu código falta; termina
user889030

0

Me gustaría cambiar a esto

wp_safe_redirect( wc_get_page_permalink( 'myaccount' ) );

en lugar de

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

2
¿Podría explicar por qué esto ayudará, para que otras personas puedan aprender algo de su respuesta?
Krzysiek Dróżdż
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.