wake-up-neo.net

die Funktion wp_redirect () funktioniert nicht

wp_redirect($post->guid) funktioniert nicht. Wie kann ich das beheben?

Das ist mein 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);

} 
6
SANS780730

Zwei Dinge stimmen hier nicht:

  1. Verwenden Sie $post->guid nicht als URL
  2. Sie müssen exit() nach der Verwendung von wp_redirect() ( siehe Codex )

    wp_redirect() wird nicht automatisch beendet und sollte fast immer von exit gefolgt werden.

//..... code as in question
$post_id = wp_insert_post($new_post);
$url = get_permalink( $post_id );
wp_redirect($url);
exit();
20
Stephen Harris

Ich bin mir nicht sicher, ob dies helfen wird ... aber ich habe festgestellt, dass ich einen Code in einer Vorlage habe und auf diese Weise mit get_header () angefangen habe:

<?php
/**
 * .. Template comments
 */

 get_header();

 if(...) {
    ...
    if(...) {
      ...
      wp_redirect($url);
      exit();
    }
 }
 ?>

und habe die gleiche Ausgabe des zuvor gesendeten Headers erhalten ... Ich habe nur get_header () an das Ende des Blocks verschoben und voila !!!

<?php
/**
 * .. Template comments
 */


 if(...) {
    ...
    if(...) {
      ...
      wp_redirect($url);
      exit();
    }
 }
 get_header();
 ?>

Es wurde kein Plugin deaktiviert. und alles war in Ordnung ... Sie können einen Versuch geben, wenn dies für Sie funktioniert

7
user6181996

Verwenden Sie niemals den Wert post GUID, er muss nicht mit der tatsächlichen URL des Posts übereinstimmen.

http://codex.wordpress.org/Changing_The_Site_URL#Important_GUID_Note

wp_redirect( get_permalink( $post_id ) );
exit(); // always exit

Stellen Sie außerdem sicher, dass wp_redirect nicht durch etwas anderes verstopft ist, das die ordnungsgemäße Ausführung verhindert. Deaktivieren Sie alle Plugins und kehren Sie zu Twenty Ten/Eleven zurück, um dies zu überprüfen.

5
soulseekah

Ich habe eine einfache Lösung, lesen Sie bitte:

  1. Wenn Sie wp_redirect($url) in Designdateien verwenden und dies nicht funktioniert, fügen Sie ob_clean() ob_start() in Ihre Funktionsdatei ein.

  2. Wenn Sie das Plugin verwenden, fügen Sie ob_clean() ob_start() in die Haupt-Plugin-Datei ein.

Und stellen Sie sicher, dass Sie exit() function after wp_redirect($url) hinzugefügt haben:

$url = 'http://example.com';
wp_redirect($url);
exit();
5
yogesh

Stellen Sie sicher, dass Sie nicht über Folgendes verfügen: get_header(); oder eine WordPress-Funktion, die möglicherweise Inhalte wie Kopf- und Fußzeilen in Ihrer Vorlage erstellt. Andernfalls funktioniert die Umleitung nicht.

Einige Entwickler versuchen, die Seite mit ob_start(); zu löschen. Wenn Sie jedoch Inhalte auf Ihrer Seite haben, auch wenn Sie ob_start(); verwenden, funktioniert die Umleitung nicht.

und dann probiere einfach diesen Code:

wp_redirect(get_permalink($post->ID));
exit;
0
Fury