web-dev-qa-db-ja.com

ポストギャラリーへのadd_filterとすべての<br>の削除?

こんにちは、私は本当にあなたの助けが必要です。

私がwordpressでギャラリーを使用し、その列を1に設定するたびに、Wordpressは自動的に<br style="clear: both"/>の後に<dl class="gallery-item">を追加します。私は本当にこの振る舞いを防ぐ必要があるので、私は自分のfunctions.phpにフィルタを追加したいと思います。

以下の例は動作しません。

add_filter( 'post_gallery', 'remove_br_gallery', 9);

function remove_br_gallery($output) {

    return preg_replace('#\<br*.?\>#is', '',  $output);

}  


add_filter( 'the_content', 'remove_br_gallery', 9);

function remove_br_gallery($output) {

    return preg_replace('#\<br*.?\>#is', '',  $output);

}

これもしません:

return str_replace('<br style="clear: both">', '',  $output);  

どのように私はそれを解決することができましたか?私のギャラリーの中に<br style="clear: both"/>を入れたくないのです。

3
mathiregister

編集:ショートコードが処理された後、あなたはあなたのフィルタを呼び出す必要があり、それに10以上の優先順位を与え、そしてあなたは複数行の表現で一致しなければなりません。

私のインスタレーションで、そして標準のギャラリーのshortagを使ってこの作品を試してみてください。

add_filter( 'the_content', 'remove_br_gallery', 11, 2);
function remove_br_gallery($output) {
    return preg_replace('/<br style=(.*)>/mi','',$output);
}
1
keatch

あるいは、代わりに、スタイルシートの上書きを介して<br>の効果を無効にすることもできます。

body dl.gallery-item + br { display: none; }

3
wyrfel

きれいなマークアップを得るためにJustin Tadlockの Cleaner Gallery pluginを使うことができます。

0
kucrut

Preg_replaceにアポストロフィを含める必要があります。

return preg_replace('/<br style="(.*)">/mi','',$output);
0
Betagoo