タイトルの区切り文字として3つのスペースを使いたいのですが。私はすべてのフィルタを削除します。
remove_all_filters('the_title');
そして私自身のフィルタを追加します。
add_filter('the_title', 'my_title_filter');
たとえば、私のフィルタは3つのスペースを3つのドットに置き換えます。
$title = preg_replace('#(\s\s\s)#', '...', $title);
しかし、何もうまくいきません。
どうすれば複数のスペースの置き換えを避けることができますか?
Codex でわかるように、フィルタには実際には2つの引数があります。
add_filter( 'the_title', function ( $title, $id = null ) {
return preg_replace('#(\s{3})#', '…', $title);
}, 10, 2 );
その場で置き換えるプレースホルダを使用することもできます - もっと簡単かもしれません。
上記の方法でうまくいかない場合は、呼び出す前に試してみることをお勧めします。
$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();
上記の^が機能する場合は、フィルタを正しく削除することに問題があります。 var_dump($GLOBALS['wp_filter']['the_title'];)
の呼び出しの上にthe_title()
を付け加えて、それから何が残されているかを調べて、それを気にしたいと思うかもしれません。