WordPressのpの多さを何とかしてみたい。

  • このエントリーをはてなブックマークに追加
  • 0

WordPressが、登校時の改行を勝手に「<p></p>」に変換するのが非常に邪魔くさかったので、何とか

  • 改行→<br>タグ
  • 空行→<p>タグの切れ目

と言うようにしたかった。そこでまず、「改行→<br>タグ」だけでも実現しようと調査して、

WPは、記事を書いて複数改行を入れても <p>タグで囲まれて処理してしまい
リターンで改行をコントロールできません。

<blockquote>の中まで <p > </p>入れ込みやがるのでかなわん。

mixi風に、改行したら改行しただけ改行してほしいので(ややこしい
ソース書き換え。
CamCam ? WordPress 改行処理

にあった、関数「wpautop」をちょっとだけ書き換えて、関数名をwpautobrとしてみた。

こんな感じ。

  1. function wpautobr($pee, $br = 0) {
  2.     $pee = str_replace(array("\r\n", "\r"), "\n", $pee); // cross-platform newlines
  3.     $pee = str_replace("<br />\n", "\n", $pee); // cross-platform newlines
  4.     $pee = str_replace("\n", "<br />\n", $pee); // cross-platform newlines
  5.     $pee = preg_replace('!(</?(?:table|a|img|thead|tfoot|caption|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|textarea|input|blockquote|address|math|p|h[1-6])[^>]*>)\s*<br />!', "$1", $pee);
  6.     $pee="<p>\n".$pee."</p>\n";
  7.     return $pee;
  8. }

変更点は上から2つ目の文字列置換部分で、<br>タグ+改行の場合、改行を<br>タグにしないようにした(実際には、タグを一旦消して、次の行で改行がタグに変わるのでプラマイゼロという感覚)。
で、この関数をWordPressの「wp-include\formatting.php」に追加して、「wp-include\default-filters.php」の105行目以降にあった

  1. add_filter('the_content', 'wptexturize');
  2. add_filter('the_content', 'convert_smilies');
  3. add_filter('the_content', 'convert_chars');
  4. add_filter('the_content', 'wpautop');
  5. add_filter('the_content', 'prepend_attachment');

を、以下のように変更(下から2行目が変わってる)。

  1. add_filter('the_content', 'wptexturize');
  2. add_filter('the_content', 'convert_smilies');
  3. add_filter('the_content', 'convert_chars');
  4. add_filter('the_content', 'wpautobr');
  5. add_filter('the_content', 'prepend_attachment');

これで、メインコンテンツの部分だけフィルタが変わって、<p>は記事1つに1つだけになり、記事中の改行は<br>タグになった。今度は、空行が挟まったら段落を変えられるようにして行こう。それを前提に記事も書こう。

スポンサーリンク
スポンサーリンク
  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク