Redirigir a los usuarios en una categoría de publicación específica o en una página de categoría

2

Estoy intentando redirigir a los usuarios en una categoría específica con este gancho:

// Show app-data posts only to app users
function user_redirect()
{
    if ( is_category( 'app-data' ) ) {
        $url = site_url();
        wp_redirect( $url );
        exit();
    }
}
add_action( 'the_post', 'user_redirect' );

Pero no funciona y no sé por qué. redirige si el usuario si navega por la categoría. Quiero redirigir si el usuario está navegando por la categoría o una publicación de esa categoría

    
pregunta CDrosos 20.06.2018 - 10:17

2 respuestas

2

¿Por qué no funciona?

Hay un problema importante con su código ... No puede redireccionar después de que ya se haya enviado ningún contenido html ... Se ignorará dicha redirección ...

Entonces, ¿por qué tu código es incorrecto? Debido a the_post hook. Este gancho se activa cuando se configura el objeto de publicación. Por lo general, está en el bucle, que es demasiado tarde para hacer redirecciones ...

Entonces, ¿cómo arreglar tu código?

Usa otro gancho.

Aquí está la lista de ganchos disponibles durante la solicitud típica .

Uno de los mejores ganchos para hacer redirecciones ( y se usa comúnmente para eso ) es template_redirect . Como puede ver, se activó justo antes de obtener el encabezado, por lo que todo está ya configurado.

function redirect_not_app_users_if_app_data_category() {
    if ( (is_category( 'app-data' ) || in_category('app-data'))&& ! is_user_logged_in() ) {
        wp_redirect( home_url() );
        die;
    }
}
add_action( 'template_redirect', 'redirect_not_app_users_if_app_data_category');
    
respondido por el Krzysiek Dróżdż 20.06.2018 - 11:42
2

cambia el nombre de tu gancho the_post a template_redirect

add_action( 'template_redirect', 'wpse_restrict_catgorey');
function wpse_restrict_catgorey(){

  if( ! is_user_logged_in() && is_category( 'app-data' ) ) {
    wp_redirect( home_url() );
    exit;
  }
}
    
respondido por el Patel Jignesh 20.06.2018 - 11:34

Lea otras preguntas en las etiquetas