Je voudrais utiliser trois espaces comme diviseur dans mes titres. Je supprime tous les filtres avec:
remove_all_filters('the_title');
et ajouter mon propre filtre:
add_filter('the_title', 'my_title_filter');
par exemple, mon filtre remplace 3 espaces par 3 points, comme:
$title = preg_replace('#(\s\s\s)#', '...', $title);
mais rien ne fonctionne.
Comment puis-je éviter le remplacement de plusieurs espaces?
Comme vous pouvez le voir dans du Codex , le filtre a en fait 2 arguments, qui doivent être spécifiés:
add_filter( 'the_title', function ( $title, $id = null ) {
return preg_replace('#(\s{3})#', '…', $title);
}, 10, 2 );
Vous pouvez aussi simplement utiliser un espace réservé que vous remplacez à la volée - cela pourrait être plus facile.
Si cela ne fonctionne pas, essayez d’essayer avant de l’appeler:
$filters = $GLOBALS['wp_filter']['the_title'];
foreach ( $filters as $priority => $filter ) {
remove_all_filters('the_title', $priority);
}
add_filter( 'the_title', function ( $title, $id = null ) {
return preg_replace('#(\s{3})#', '…', $title);
}, 10, 2 );
the_title();
Si ^ ci-dessus fonctionne, vous rencontrez des difficultés pour supprimer les filtres correctement. Vous voudrez peut-être simplement placer var_dump($GLOBALS['wp_filter']['the_title'];)
au-dessus de l'appel à the_title()
, puis jeter un coup d'œil à ce qui reste et en tenir compte.