Redireccionar usuarios no logueados desde páginas específicas
He visto esta pregunta antes pero no exactamente intentando lograr lo que quiero.
Básicamente lo que quiero es: Si el usuario no está logueado Y está en -esta página- O -esta página- O -esta página, redirigirlo a -esta página- (que es una página de registro personalizada)
Estoy modificando este fragmento de código, pero no funciona. Agradeceré cualquier tipo de orientación.
<?php
function redirect_non_logged_in(){
// si el usuario no está logueado y está en estas páginas
if( !is_user_logged_in() && is_page( array( 250, 253 ) ) ) {
// Esto redirige a la página de registro personalizada
wp_redirect(site_url('/registro-usuario'));
exit();
}
}
add_filter('get_header','redirect_non_logged_in');
?>

Tu función está bien, pero 'get_header'
es demasiado tarde.
Usa template_redirect
en su lugar:
add_action( 'template_redirect', function() {
if ( is_user_logged_in() || ! is_page() ) return;
$restricted = array( 250, 253 ); // todas tus páginas restringidas
if ( in_array( get_queried_object_id(), $restricted ) ) {
wp_redirect( site_url( '/user-registration' ) );
exit();
}
});
Asegúrate de no incluir el ID de la página 'user-registration' en el array $restricted
o experimentarás una redirección infinita...

Lamento interrumpir, pero en lugar de replicar la pregunta, te la haré aquí. Uso este código ligeramente modificado basado en tu respuesta: add_action( 'template_redirect', function() { if ( !is_page('login') || !is_user_logged_in() ) { wp_redirect( site_url( '/login', 301 ) ); exit(); }});
, sin embargo, sigo recibiendo el bucle de redirección. ¿Puedes señalar qué está mal?

Tu problema es que login no es una página, por lo que is_page('login')
nunca puede ser verdadero. Saber si estás en la página de inicio de sesión no es directo en WordPress, mira esta respuesta para saber cómo hacerlo. @FrederickAndersen

Instalar el plugin Page Restrict https://da.wordpress.org/plugins/pagerestrict/
En los ajustes, selecciona que el formulario de inicio de sesión no se muestre
Inserta el siguiente enlace en el mensaje de restricción: <a href="https://tu-pagina-de-login/">Iniciar sesión</a>
para ver esta página/entrada
