web-dev-qa-db-fra.com

wp_redirect ne fonctionne pas depuis la fonction shortcode

Chaque fois que j'utilise wp_redirect(plugins_url('account/login')); dans une fonction de shortcode, l'erreur suivante apparaît:

Warning: Cannot modify header information - headers already sent by ...

Est-il possible de rediriger à partir de là? Mon hypothèse serait de faire écho à un Javascript qui fait la redirection de ma part, mais je me demandais s’il y aurait une implémentation côté serveur.

1
Joren

Pourquoi faut-il un Shortcode? Ressemble à un problème XY .

Vous insérez déjà le shortcode manuellement dans l'écran d'édition. Utilisez plutôt un champ personnalisé et raccordez-le plus tôt où vous pouvez effectuer la redirection .

enter image description here

add_action( 'template_redirect', function(){
    global $post;
    $redirect = get_post_meta( $post->ID, 'redirect', true );
    if( $redirect )
    {
        wp_redirect( admin_url( 'profile.php' ) );
        exit;
    }
});
1
brasofilo

Pour rediriger vers une autre page, vous devez définir un en-tête http. Pour définir un en-tête, il doit être la première chose à afficher dans le navigateur.

Vous essayez de définir un en-tête lorsque quelque chose a déjà été exporté dans le navigateur. C'est pourquoi vous obtenez l'avertissement et la redirection ne fonctionne pas.

Vous devez modifier votre implémentation pour que la redirection soit déclenchée avant que quoi que ce soit ne soit généré. Donc, vous devriez accrocher init ou toute autre action qui se produit avant la sortie.

Cela peut aussi être dû à un autre plugin qui ne génère pas correctement quelque chose.

0
s1lv3r