はせる

は・せる、馳せる

JetpackのMarkdownで余計な改行タグが挿入される

 「Jetpack by WordPress.com」のMarkdownを使用していてちょっとおかしな挙動が……改行タグ(BRタグ)が余計に挿入されている様子。これ、ちょっと調べてみよう。

問題編

 Markdownでの改行タグ(BRタグ)って「半角スペース2つ以上挿入」だと思うんだけど、これが通常の改行でも挿入されることがあった。
 例えば下記のようにAmazonJSで商品を2個以上並べたとき、改行で区切るとプレビュー時に間に改行タグが挿入される。このとき半角スペースは入力していなかった。

[amazonjs asin="xxx" locale="JP" title="xxx"]/*ここに
が挿入される*/ [amazonjs asin="xxx" locale="JP" title="xxx"]

 むきーっ!てなって、その場はとりあえず改行なしで繋げた状態にして公開したんだけど、これは絶対おかしい。

解決編

 以前フィルタの「wpautop1」を無効にしていて、Markdownに移行したときにそのままでは段落タグ(Pタグ)が挿入されないので、これを有効に戻した経緯がある。もしかしたらこれじゃないかと。

 で、wpautopについて調べてみると、第2引数を与えられる様子。

説明
string wpautop( string $pee [ , bool $br = true ] )
pタグ、brタグを整頓する。
via wpautop:WordPress私的マニュアル

 つまり、第2引数にfalseを与えると、改行タグの挿入は制御できるということ。下記のコードをfunctions.phpに追記して問題は解決した。

remove_filter('the_content','wpautop');
add_filter('the_content','wpautop_nobr');

function wpautop_nobr($txt) {
    return wpautop($txt, false);
}

これでいい……のかな?

 まだちょっと引っかかる。
 そもそも、JetpackのMarkdownが段落タグの制御を「wpautop」に任せているというのもどうなんだろうか?本来はJetpackのMarkdownモジュール自身が担うべきなんじゃないかと思うんだけれども……ねぇ?

余談

 僕は元々HTMLタグで記事を書いて投稿していた人で、そんなわけで「wpautop」を無効にしていた。つい最近になってMarkdownで表記するようになったんだけど、移行してから更新作業はかなり楽になった。なんで今まで使ってなかったのかわからんぐらい。脚注もできるんだ、すごい!
 楽になったからといって更新頻度が上がっているわけでないのは如何ともしがたい。


  1. the_content関数のフィルタで、自動で段落タグや改行タグを挿入する。