web-dev-qa-db-de.com

Wo kann man sich in den Inhalt des Posts einklinken?

Welcher Hook oder Filter wird zum Bearbeiten des Beitragsinhalts verwendet, bevor der the_content-Filter darauf angewendet wird?.

Zum Beispiel, wenn ich Hallo Welt, als ersten Text in jeden Beitrag einfügen wollte.

5
rob-gordon

Sie können the_content mit einer hohen Priorität (niedrigere Nummer) verwenden.

add_filter( 'the_content', function( $content ) {
  return 'Hello World '.$content;
}, 0);

Sie können auch eine negative Priorität verwenden:

add_filter( 'the_content', function( $content ) {
  return 'Hello World '.$content;
}, -10);

Beachten Sie, dass dies immer dann gilt, wenn 'the_content' verwendet wird, unabhängig vom Beitragstyp, oder wenn der Zielbeitrag Teil der Hauptabfrage ist oder nicht.

Für mehr Kontrolle können Sie loop_start/loop_end Aktionen verwenden, um den Filter hinzuzufügen und zu entfernen:

// the function that edits post content
function my_edit_content( $content ) {
  global $post;
  // only edit specific post types
  $types = array( 'post', 'page' );
  if ( $post && in_array( $post->post_type, $types, true ) ) {
     $content = 'Hello World '. $content;
  }

  return $content;
}

// add the filter when main loop starts
add_action( 'loop_start', function( WP_Query $query ) {
   if ( $query->is_main_query() ) {
     add_filter( 'the_content', 'my_edit_content', -10 );
   }
} );

// remove the filter when main loop ends
add_action( 'loop_end', function( WP_Query $query ) {
   if ( has_filter( 'the_content', 'my_edit_content' ) ) {
     remove_filter( 'the_content', 'my_edit_content' );
   }
} );
5
gmazzap

Vor the_content wird kein anderer globaler Filter angewendet - Sie können das Argument $priority in Ihrem add_filter -Aufruf verwenden, um sicherzustellen, dass Ihre Funktion vor allen anderen ausgeführt wird:

function wpse_225625_to_the_top( $content ) {
    return "Hello World\n\n\$content";
}

add_filter( 'the_content', 'wpse_225625_to_the_top', -1 /* Super important yo */  );
1
TheDeadMedic