Der Inhalt wird nicht geladen, wenn die Aktion the_content verwendet wird

Wenn ich add_action verwende (‘the_content’ …

Der Inhalt der Seite wird nicht geladen. Auch der Inhalt, den ich versuche, erscheint an allen möglichen Stellen auf der Seite. Warum?

Gibt es eine Möglichkeit, es zu zwingen, nur unter meiner Post zu erscheinen?

function __construct() { add_action( 'wp_footer', array(&$this, 'loadRatingsJs') ); add_action( 'wp_ajax_valnetincGetRatings', array(&$this, 'getRatings' ) ); add_action( 'wp_ajax_nopriv_valnetincGetRatings', array(&$this, 'getRatings' ) ); //add_action( 'the_excerpt', array(&$this, 'getRatings' ) ); add_filter( 'the_content', array(&$this, 'getRatings' ) ); } public function getRatings($content) { //echo $postID; if(function_exists('the_ratings')) { /*if(is_null($postID)) { the_ratings(); } else { the_ratings('div', $postID); }*/ $rating = the_ratings(); return $content.$rating; } } 

Solutions Collecting From Web of "Der Inhalt wird nicht geladen, wenn die Aktion the_content verwendet wird"

the_content ist keine Aktion, es ist ein Filter. Sie sollten eine Zeichenfolge verketten und zurückgeben. Es klingt, als würden Sie Inhalte direkt wiedergeben.

Das ist:

 // wrong function test_content($content) { echo 'this is wrong'; } add_filter('the_content','test_content'); // right function test_content($content) { return 'this is right '.$content; } add_filter('the_content','test_content'); 

Ein mögliches Problem ist, dass Sie nichts zurückgeben, wenn Ihre Bedingung fehlschlägt:

 public function getRatings($content) { //echo $postID; if(function_exists('the_ratings')) { /*if(is_null($postID)) { the_ratings(); } else { the_ratings('div', $postID); }*/ $rating = the_ratings(); return $content.$rating; } } 

Vereinfachen:

 public function getRatings($content) { // Conditional if(function_exists('the_ratings')) { // Do stuff // Return modified content return $content.$rating; } } 

Das Problem ist: Sie geben nichts zurück, wenn die the_ratings() function nicht existiert. Sie müssen diese Bedingung berücksichtigen:

 public function getRatings($content) { // Conditional if(function_exists('the_ratings')) { // Do stuff // Return modified content return $content.$rating; } // Condition is false; // Just return the original content return $content; } 

Ein noch einfacherer Weg (vielleicht) besteht darin, außerhalb der Bedingung zurückzukehren und nur innerhalb der Bedingung zu modifizieren :

 public function getRatings($content) { // Conditional if(function_exists('the_ratings')) { // Do stuff // Modify content $content .= $rating; } // Return content, modified or unmodified return $content; }