wp_redirect($post->guid)
ne fonctionne pas. Comment puis-je réparer cela?
Ceci est mon code:
if(isset($_REQUEST['vid']) ){
$id=$_REQUEST['vid'];
$post_title = 'sasa';
$post_content ='zxczxczxc';
$new_post = array(
'ID' => '',
'post_author' => $user->ID,
'post_content' => $post_content,
'post_title' => $post_title,
'post_status' => 'publish',
// NOW IT'S ALREADY AN ARRAY
);
$post_id = wp_insert_post($new_post);
// This will redirect you to the newly created post
$post = get_post($post_id);
$url=$post->guid;
wp_redirect($post->guid);
}
Deux choses ne vont pas ici:
$post->guid
comme une URLexit()
après avoir utilisé wp_redirect()
( voir le Codex )
wp_redirect()
ne se ferme pas automatiquement et devrait presque toujours être suivi d'une sortie.
//..... code as in question
$post_id = wp_insert_post($new_post);
$url = get_permalink( $post_id );
wp_redirect($url);
exit();
Je ne sais pas si cela va aider ... mais j'ai constaté que j'avais un code dans un modèle et que je commençais par get_header () de la manière suivante:
<?php
/**
* .. Template comments
*/
get_header();
if(...) {
...
if(...) {
...
wp_redirect($url);
exit();
}
}
?>
et recevait le même problème d'en-tête déjà envoyé ... Ce que j'ai fait était de déplacer get_header () à la fin du bloc et le tour est joué !!!
<?php
/**
* .. Template comments
*/
if(...) {
...
if(...) {
...
wp_redirect($url);
exit();
}
}
get_header();
?>
Aucun plugin n'a été désactivé. et tout était ok ... vous pouvez essayer si cela fonctionne pour vous
N'utilisez jamais la valeur post GUID, il ne doit pas nécessairement correspondre à l'URL réelle de la publication.
http://codex.wordpress.org/Changing_The_Site_URL#Important_GUID_Note
wp_redirect( get_permalink( $post_id ) );
exit(); // always exit
Assurez-vous également que wp_redirect
n'est pas branché par quelque chose d'autre qui l'empêche de faire son travail correctement. Désactivez tous les plugins et revenez à Twenty Ten/Eleven pour vérifier.
J'ai une solution simple, s'il vous plaît lisez:
Si vous utilisez wp_redirect($url)
dans les fichiers de thème et que cela ne fonctionne pas, ajoutez ob_clean() ob_start()
dans votre fichier de fonction en haut.
Si vous utilisez in plugin, ajoutez ob_clean() ob_start()
dans le fichier de plugin principal en haut.
Et assurez-vous que vous avez ajouté exit() function after wp_redirect($url)
Comme ceci:
$url = 'http://example.com';
wp_redirect($url);
exit();
Assurez-vous de ne pas avoir: get_header();
ou une fonction wordpress susceptible de créer des contenus tels que l'en-tête et le pied de page dans votre modèle. Sinon, la redirection ne fonctionnera pas.
Certains développeurs tentent d'effacer la page en utilisant ob_start();
, mais si vous avez du contenu dans votre page, même si vous utilisez ob_start();
, la redirection ne fonctionnera pas.
et puis essayez simplement ce code:
wp_redirect(get_permalink($post->ID));
exit;