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 );
このプログラムをお使いになる場合は、お使いになる方の自己責任でお願いします。