3. 5 連続brタグを保護(2)

フィルター'wpautop'を削除

 WordPress のエディター設定で保存時までbrタグを保持できますが、表示時には削除されたままです。その対策です。
 フィルター'wpautop'を削除します。
 このフィルターを削除すると、WordPressオリジナル形式で保存した投稿の表示に支障が出ます。代替用簡易版フィルターを追加しています。ブロックタグがなく、brタグがなく、改行がある場合、オリジナル形式とみなし wpautop を実行します。優先順位は'shortcode_unautop'より前にする必要があります。

 フィルター'wpautop'を削除することで下記の効果があります。
   ・連続brタグが“表示時”、保持される。
   ・divタグのネストで文法上誤ったpタグが入らない。

コード

// --------------------------------
// wpautop 削除
// --------------------------------
remove_filter( 'the_content', 'wpautop' );

// --------------------------------
// wpautop の代替追加
//   オリジナル形式対策
// --------------------------------
function hk_editor_autop( $content ) {
    $allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary)';
    $pattern = '/<'.$allblocks.'( [^>]*>|>)/i';
    $content = preg_replace( '/\r\n|\r/', "\n", $content );
    if (( ! preg_match( $pattern, $content ) )
     && ( strpos( $content, '<br ' ) === false )
     && ( strpos( $content, "\n"   ) !== false ))
        $content = wpautop( $content );
    return $content;
}
add_filter( 'the_content', 'hk_editor_autop', 9 );

 このプログラムをお使いになる場合は、お使いになる方の自己責任でお願いします。

関連

更新日:2015/11/16
掲載日:2015/11/15