ich versuche, Benutzer auf bestimmte Kategorien mit diesem Hook umzuleiten:
// 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' );
Aber es funktioniert nicht und ich weiß nicht warum. Es wird umgeleitet, wenn der Benutzer die Kategorie durchsucht. Ich möchte umleiten, wenn der Benutzer die Kategorie oder einen Beitrag dieser Kategorie durchsucht
Es gibt ein großes Problem mit Ihrem Code ... Sie können nicht umleiten, nachdem bereits HTML-Inhalte gesendet wurden ... Eine solche Umleitung wird ignoriert ...
Warum ist Ihr Code falsch? Wegen the_post
hook. Dieser Haken wird ausgelöst, wenn das Postobjekt eingerichtet wird. Normalerweise ist es also in der Schleife, was viel zu spät ist, um Weiterleitungen durchzuführen ...
Verwenden Sie einen anderen Haken.
Hier ist die Liste der verfügbaren Hooks, die während einer typischen Anfrage ausgelöst wurden .
Einer der besten Hooks für Redirects ( und häufig dafür verwendet ) ist template_redirect
. Wie Sie sehen, wird es kurz vor dem Abrufen des Headers ausgelöst, sodass bereits alles eingerichtet ist.
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');
ändere deinen Hook-Namen the_post in 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;
}
}