ECHO, das 4mal im Kopf durchführt

Ich habe ein Plugin, das ich als Test erstellt habe und stoße in ein paar Schwierigkeiten. Der Code wird 4 Mal ausgeführt und platziert das, was ich im -Tag der Seite widerspiegelt. Der Grund, warum ich ein echo mache, ist, dass ich Probleme mit einem anderen Plugin habe und nicht herausfinden kann, warum mein Code 4 Mal ausgeführt wurde. Also habe ich ein einfaches Beispiel erstellt, das ich replizieren und hoffentlich reparieren kann (mit Ihrer Hilfe). Jetzt auf den Code …

Meine functionen.php:

 /* Plugin Name: What Have I Done? Plugin URI: http://www.myplugintest4times.com Description: This is just a test for replicated html in the head. Version: 1.0.0 Author: Someone Special Author URI: http://www.somewhereoutthere.com */ // Definitions define('MY_PLUGIN_PATH' , plugin_dir_path( __FILE__ )); define('MY_PLUGIN_URL', get_option('siteurl') . '/wp-content/plugins/testplugin'); // Classes require_once(dirname(__FILE__) . '/includes.php'); 

Meine include.php:

 function mytest_filter($content) { global $post; echo "

my test again

"; $testpage = get_page_by_title('Test'); $subtestpage = get_page_by_title('SubTest'); if ($post->ID == $testpage->ID || wp_get_post_parent_id($subtestpage) == $testpage->ID) { // this is a test page, filter the content... switch($post->ID) { case $testpage->ID: echo "this is the test page"; // return $html; break; case $subtestpage->ID: echo "this is the sub test page (test is the parent)"; // return $html; break; } } else { return $content; } } add_filter('the_content', 'mytest_filter');

Jetzt habe ich zwei Seiten auf der Site, eine namens Test und eine namens SubTest. Wenn eine dieser Seiten das aktuelle $post Objekt ist, gebe ich meinen Inhalt anstelle von WordPress $content . Ich mache das jetzt seit fast 3 Jahren, also wenn ich all die Jahre falsch gemacht habe, brauche ich eine Richtung.

Das resultierende HTML ist:

 

my test again

this is the test page

my test again

this is the test page

my test again

this is the test page

my test again

this is the test page

Und wenn Sie die Quelle für die Seite anzeigen, ist dies alles in . Es fügt auch den Inhalt korrekt in das -Tag ein, aber der andere ist da und verursacht Kopfschmerzen, denn wenn ich einen POST mache, wird er 4 Mal ausgeführt. Also, ist das nicht der richtige Weg, um meinen Inhalt auf einer Seite zu injizieren / ersetzen?

Solutions Collecting From Web of "ECHO, das 4mal im Kopf durchführt"

Filter sollten zurückkehren, nicht echo.

 function my_content( $content ) { // Something something $content = 'my content'; return $content; } add_filter( 'the_content', 'my_content' ); 

Sie können echo, aber Sie müssen Ausgabepufferung, wie folgt:

 function my_content( $content ) { // Something something ob_start(); echo 'my content'; $content = ob_get_contents(); ob_end_clean(); return $content; } add_filter( 'the_content', 'my_content' ); 

Der Grund dafür, dass Sie Ihre Ausgabe im head-Bereich sehen, ist, dass der Filter wahrscheinlich irgendwo im Kopfbereich verwendet wird, vielleicht durch ein Plugin, also seien Sie vorsichtig, da Sie vielleicht etwas mehr außer Kraft setzen, als Sie erhoffen.

Ich hoffe, das hilft.