web-dev-qa-db-fra.com

Est-il possible d'utiliser plusieurs espaces dans le titre?

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?

1
user2739158

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.

1
kaiser