Quel crochet ou filtre est utilisé pour modifier le contenu de la publication avant que le filtre the_content
lui soit appliqué?.
Par exemple, si je voulais ajouter Hello World, en tant que premier texte de chaque message.
Vous pouvez utiliser the_content
avec une priorité élevée (nombre inférieur).
add_filter( 'the_content', function( $content ) {
return 'Hello World '.$content;
}, 0);
Vous pouvez même utiliser une priorité négative:
add_filter( 'the_content', function( $content ) {
return 'Hello World '.$content;
}, -10);
Notez que cela s'appliquera chaque fois que 'the_content'
est utilisé, quel que soit le type de publication ou que la publication cible fasse partie de la requête principale ou non.
Pour plus de contrôle, vous pouvez utiliser les actions loop_start
/loop_end
pour ajouter et supprimer le filtre:
// 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' );
}
} );
Aucun autre filtre global n’est appliqué avant the_content
- vous pouvez utiliser l’argument $priority
dans votre appel add_filter
pour vous assurer que votre fonction s’exécute avant les autres:
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 */ );