im essayant de rediriger les utilisateurs sur une catégorie spécifique avec ce crochet:
// 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' );
Mais ça ne marche pas et je ne sais pas pourquoi. il redirige si l'utilisateur navigue dans la catégorie. je veux rediriger si l'utilisateur navigue dans la catégorie ou un post de cette catégorie
Il y a un problème majeur avec votre code ... Vous ne pouvez pas rediriger après qu'un contenu HTML ait déjà été envoyé ... Cette redirection sera ignorée ...
Alors, pourquoi votre code est-il incorrect? À cause de the_post
hook. Ce hook est activé lorsque l'objet de post est configuré. Donc d'habitude c'est dans la boucle, ce qui est beaucoup trop tard pour faire des redirections ...
Utilisez un autre crochet.
Voici la liste des hooks disponibles activés lors d'une requête typique .
L'un des meilleurs points d'ancrage pour effectuer des redirections ( et couramment utilisé pour cela ) est template_redirect
. Comme vous pouvez le voir, il est déclenché juste avant l’en-tête, donc tout est déjà configuré.
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');
changez le nom de votre crochet the_post en 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;
}
}