Comment WordPress convertit-il les données brutes de la base de données en un format lisible dans la fonction the_content?
J'ai remarqué qu'il applique le filtre the_content, mais que fait le filtre the_content?
les filtres par défaut sont définis dans /wp-includes/default-filters.php;
pour 'the_content', cela provient de la ligne 135:
add_filter( 'the_content', 'wptexturize' );
add_filter( 'the_content', 'convert_smilies' );
add_filter( 'the_content', 'convert_chars' );
add_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'shortcode_unautop' );
add_filter( 'the_content', 'prepend_attachment' );
pour suivre les fonctions individuelles, vous pouvez utiliser http://phpxref.ftwr.co.uk/wordpress/nav.html?_functions/index.html puis suivre les liens ...
Omission manquante (wp-includes/default-filters.php
, ligne 102):
// Format WordPress
foreach ( array( 'the_content', 'the_title' ) as $filter )
add_filter( $filter, 'capital_P_dangit', 11 );
Tous les filtres sont stockés dans la variable globale $wp_filter
. Vous pouvez inspecter cette variable pour voir quelles fonctions sont liées à un certain filtre.
global $wp_filter;
print_r($wp_filter['the_content']);
Pour comprendre exactement le tableau généré, il est très utile de savoir comment la variable $wp_filter
est construite. Cette ligne provient de la source de la fonction add_filter()
:
$wp_filter[$tag][$priority][$idx] = array('function' => $function_to_add, 'accepted_args' => $accepted_args);
mais que fait le filtre the_content?
Content_filter vous permet de retourner du contenu personnalisé avant ou après le contenu.
Voici deux exemples pratiques très simples d'utilisation du filtre the_content dans une fonction personnalisée:
Cet exemple renvoie un contenu personnalisé avant le contenu
add_filter( 'the_content', 'return_before_content' );
function return_before_content( $content ) {
if ( is_singular('post')) {
$before_content = '<p>Text Returned Before the_content</p>';
$content = $before_content . $content;
}
return $content;
}
Cet exemple renvoie un contenu personnalisé après le contenu
add_filter( 'the_content', 'return_after_content' );
function return_after_content( $content ) {
if ( is_singular('post')) {
$after_content = '<p>Text Returned After the_content</p>';
$content = $content . $after_content;
}
return $content;
}