web-dev-qa-db-ja.com

テキストエディタで複数の改行が機能しなくなったのはなぜですか?

# Adds ability to add break tags on posts
remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );

add_filter( 'the_content', 'nl2br' );
add_filter( 'the_excerpt', 'nl2br' );

私達は何年もの間私達のカスタムプラグインの中に上記のコードを持っていて、それはbreakタグを機能させました。

それでもうまくいきます。複数の改行を除いては機能しません。行に50個のbreakタグを入れると、テキストは次の行に移動します。問題は、多くのストレートHTMLをコピー/ペーストする必要があり、間隔はbreakタグを使用して行われることです。

では、4.4.latestから4.5.latestに移行すると、なぜこれが機能しなくなったのでしょうか。そしてもっと重要なことは、そこにあるものを読むためにちょっとしたことができるようにするために何ができるかということです。また、私はAdvanced TinyMCEウィジェットを使用して段落/改行を表示しようとしました...これは再び機能しますが、複数には機能しません。 (はい、私は人々が線を見せるためにその間に切れ目のないスペースを持つことができることを理解しています - これは私たちの側で多くの作業を含み、本当にゲットーです)

6
STing

コメントから、問題はプラグインの誤動作に関連しているようです。

1
Mark Kaplun

新しいフィルタを削除して追加するコードを呼び出すのはいつですか。あなたはより高い優先順位でそれらを呼び出すことを試みることができます(あなたが別のフックからそれらを呼び出している場合)。

たぶんそれはthe_contentでそれ自身の置き換えをしている別のプラグインやテーマによるものです...それがwpautop自身を呼んでいるかnl2brフィルタを削除しているかどうか。

nl2brのフィルタを削除するのであれば、単に独自の関数を呼び出すことができます。

add_filter( 'the_content', 'myown_nl2br' );
add_filter( 'the_excerpt', 'myown_nl2br' );

function myown_nl2br($string) { 
    $string = str_replace(array("\r\n", "\r", "\n"), "<br />", $string); 
    return $string; 
} 

改行リファレンス:

  • windows =\r\n
  • unix =\n
  • osx/mac =\r

上記の関数でnl2br()を呼び出すだけでも構いませんが、str_replaceを使用するとその機能を理解できます。技術的にはnl2br()は改行の前に<br/>を挿入するだけで、実際には改行を削除しません。


原因を突き止める:

wp-contentディレクトリ全体を検索してthe_contentを探し、フィルタが削除された、追加されたなどの一致箇所を探します。また、nl2brwpautopも検索します。これは原因の特定に役立ちます。

何らかの理由であなたが見つけたプラグインやテーマがクラスオブジェクトのメソッドへのコールバックを持っているなら、標準のremove_filterは機能しないでしょう、これは私がクラスにアクセスできない場合フィルタを削除するためのコードを投稿しましたオブジェクト:

https://wordpress.stackexchange.com/a/239431/51201

0
sMyles