Kopfzeilen können nicht geändert werden

Ich hasse diesen Fehler absolut. Und verstehe es überhaupt nicht.

Das ist also mein Code, auf den du dich konzentrieren willst, ist die foreach-Schleife:

public function reset_theme_options(){ if($this->is_theme_options_array()){ foreach($this->_theme_option['admin_options'] as $option_name=>$value){ if($value != false){ delete_option($option_name); $http = new AisisCore_Http_Http(); wp_safe_redirect($http->get_current_url()); } } $this->_update_option(); }else{ $this->_theme_option = array(); $this->_update_option(); } } 

Im Wesentlichen verwende ich nur den Namen der Optionen, also sagen wir, Sie speichern alle Ihre Optionen für Ihr Thema in ‘My_theme’, einem Array von Einstellungen.

Alles, was ich tue, nehme ich und lösche es – es funktioniert wie es ist.

Das Problem ist, dass ich dann im Wesentlichen (ab wp_safe_redirect() ) die Seite wp_safe_redirect() , ich könnte dies über Javascript und so machen, aber ich denke, dass dieser Weg besser ist.

Damit alles funktioniert, bekomme ich meine Erfolgsmeldung, die Optionen werden mit folgender Hitch zurückgesetzt:

Warnung: Header-Informationen können nicht geändert werden – Header, die bereits gesendet wurden (Ausgabe gestartet unter /var/www/wordpress/wp-admin/menu-header.php:94) in /var/www/wordpress/wp-includes/pluggable.php on Linie 876

Ok, also klicke ich nochmal auf den Reset-Knopf und alles funktioniert wie es soll.

Meine Schritte in diesem Fehler sind:

(Zuerst mit einem leeren Blatt beginnen, keine Optionen gespeichert) – Speichern Sie einige Optionen, drücken Sie auf “Senden”. Klicken Sie nach dem Aktualisieren der Seite auf Zurücksetzen, Boom-Fehler, Optionen werden noch gespeichert, klicken Sie erneut auf Zurücksetzen, die Optionen für den Boom werden zurückgesetzt.

Hilfe?

Solutions Collecting From Web of "Kopfzeilen können nicht geändert werden"

Wenn Sie über wp_safe_redirect redirect, wird eine Kopfzeile an den Browser wp_safe_redirect , der die URL enthält, an die umgeleitet werden soll. Wenn ein Inhalt an den Browser gesendet wurde, bevor Sie versuchen, diesen Header zu senden, erhalten Sie die Header bereits gesendet Fehler. Sobald der Inhalt in den Browser geht, ist die Headerzeit zu Ende, es können keine Header mehr gesendet werden.

Die Lösung ist, dass Ihr Code ausgeführt werden muss, bevor der Inhalt in den Browser gelangt, und hängen Sie ihn an eine Aktion an , die ausgeführt wird, bevor WordPress mit dem Rendern der Seite beginnt.

Der eigentliche Weg, dies zu umgehen, ist folgendes in die Datei functions.php zu schreiben:

 function callback($buffer){ return $buffer; } function add_ob_start(){ ob_start("callback"); } function flush_ob_end(){ ob_end_flush(); } add_action('init', 'add_ob_start'); add_action('wp_footer', 'flush_ob_end');