web-dev-qa-db-ja.com

タイトルに複数のスペースを使用することは可能ですか?

タイトルの区切り文字として3つのスペースを使いたいのですが。私はすべてのフィルタを削除します。

remove_all_filters('the_title');

そして私自身のフィルタを追加します。

add_filter('the_title', 'my_title_filter');

たとえば、私のフィルタは3つのスペースを3つのドットに置き換えます。

$title = preg_replace('#(\s\s\s)#', '...', $title);

しかし、何もうまくいきません。

どうすれば複数のスペースの置き換えを避けることができますか?

1
user2739158

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()を付け加えて、それから何が残されているかを調べて、それを気にしたいと思うかもしれません。

1
kaiser