web-dev-qa-db-fra.com

Où faut-il placer wp_redirect pour que cela fonctionne?

J'ai une page d'édition de publication frontale située à l'adresse mysite/post_id/edit et j'essaie de rediriger les utilisateurs qui ne sont pas l'auteur à la publication. Voici le code avec lequel je travaille:

    <?php
    global $current_user; get_currentuserinfo();
    if($post->post_author != $current_user->ID):
    wp_redirect( the_permalink() ); exit;
    ?>

Le problème que j'ai eu est que cela semble simplement afficher le permalien de la publication plutôt que la redirection.

wp_redirect indique que "wp_redirect ne sera pas appelé si la page a démarré, assurez-vous de l'appeler plus haut." - mais après avoir placé le code en haut du fichier header.php, j'ai quand même reçu le même problème d'affichage du lien permanent plutôt que de la redirection.

Où serait le lieu approprié pour ajouter ce code pour le rediriger?

Merci d'avance!

EDIT: J'ai essayé quelque chose avec le conseil de Milo, mais je suivrai le message de Tommix avant que je ne mette à jour le statut de Milo.

6
Stephen S.

Une fois dans le modèle, il est trop tard, car les en-têtes ont déjà été envoyés. Vous devez vous accrocher plus tôt dans la demande à vérifier, comme le crochet de redirection de modèle:

add_action( 'template_redirect', 'wpse52455_redirect' );

function wpse52455_redirect(){
    // do your check and call wp_redirect here
}

Notez que ceci sera appelé sur every request. Vous devez donc également vérifier que la page en cours est votre page de modification.

EDIT - le code ci-dessus devrait aller dans le fichier functions.php de votre thème.

14
Milo