Necesito una redirección para todos los usuarios que no han iniciado sesión en mi sitio de WordPress.
Todos ellos deben ser redirigidos cada vez al sitio de inicio de sesión. Para que nadie sin un inicio de sesión pueda acceder al sitio. Lo importante es que hice esta redirección porque tengo una API que también necesita tener acceso al sitio si hiciera esto con .htaccess , la API no tendría acceso a la información.
Usé el siguiente código PHP:
add_action('template_redirect','woo_check_loggedin'); function woo_check_loggedin(){ if(!is_user_logged_in() && !is_page(lost-password) ){ wp_redirect("https://example.com/wp-login.php"); exit; } }Pero esto solo funciona cuando voy a "example.com". Cuando ingreso directamente la URL "example.com/shop", aún puede visitar el sitio. ¿Cómo puedo evitar esto?
Puede usar la propiedad de request de la variable global wp y la función wp_login_url .
add_action('template_redirect', 'woo_check_loggedin'); function woo_check_loggedin() { global $wp; if ( !is_user_logged_in() && 'my-account/lost-password' != $wp->request ) { wp_safe_redirect(wp_login_url(get_permalink())); exit; } } ¡Esta respuesta ha sido probada en woo 6.1 y funciona!
Respuestas relacionadas para la redirección en Wooommerce: