「するぷろ」からの投稿が捗る! wpautopを限定的に有効化する方法
WordPressには自動整形を制御しているwpautop
という関数があります。
通常、WordPressを使用して投稿する場合、このwpautop
のおかげで、特に意識することなく、改段落や改行された記事を書くことができますが、意図しない表示になることもあり、わざと無効化している人も多いのではないでしょうか?
wpautop無効化で困ること
僕も環境的にはこのwpautop
を無効化して普段利用しています。
職業病とも言えますが、意図しない表示のされ方を防ぐのはもちろん、アウトラインを考えた記事を書こうと思うと、しっかりとマークアップしながら書きたくなっちゃうんですよね。
そういう人が多いのか、ググってみると無効化する方法を紹介した記事が、たくさん出てきます。
当然のことですが、無効化してしまうと、何もマークアップしないテキストは改段落も改行もされませんから、常に段落は<p>
タグで括る必要がありますし、改行は<br>
タグを入れなければなりません。
意図した通りに整形された記事を書くためには、そんな労力は何のその。
それに「MarsEdit」などを利用すれば、そこまで書くのに苦労することもありません。
ただ、これってPCなどのキーボードを利用して書くのに限った話。
これがいざスマホから更新しようと思うと、とんでもなく面倒くさいことになるんですよね。一応アプリの組み合わせ次第で、ある程度軽減はできるものの、慣れはやっぱり必要です。
一応僕もスマホからブログ更新ができるよう、「するぷろ」と「TextExpander」をインストールしていますが、記事を書くスピードを考えると、やっぱりPCから投稿しちゃいます。
限定的に自動整形をオンにする
モブログのために、わざわざ無効化したwpautop
を都度有効化する? ということも一度は考えましたが、そんな面倒なことはアホらしい。
だったらPCから書けばいいや、と。そう考えていた時期が僕にもありました。
しかしですね、リアルタイムに外からスマホで記事を書きたいというシーンもあるわけです。そこで考えたのが、「だったら特定条件下で自動整形を有効にしちゃえばいいじゃない」ってことです。
仮にこれができれば、スマホからの投稿時にわざわざ段落ごとに<p>
で括ることも、改行のたびに<br>
を挿れる必要もありません。
サクサクと文章を入力し、記事をアップすることが可能になります。
wpautopを限定的に有効化するための8行コード
ということで、今回の本題。
今回ご紹介するコードを、WordPressのテーマファイルの中にあるfunctions.phpに記述しちゃえば、wpautop
を無効化したことで発生する、スマホからの投稿時の煩わしさから解放されちゃうのですよ。やったね!!
function onautop( $content ) { if ( strpos( $content, '<!--autop-->' ) !== false ) { add_filter( 'the_content', 'wpautop' ); $content = preg_replace( "/\s*\<!--autop-->\s*(\r\n|\n|\r)?/u", "", $content ); } return $content; } add_filter( 'the_content', 'onautop', 1 );
このコードをfunctions.phpに記述・保存したら、自動整形をオンにしたい記事を書くときに、先頭行にでも<--autop-->
とコメントを入れ、あとは普通に記事を書いて投稿すればOK。
参考にしたのは以下のコード。
autop
関数で、特定のコメント(<--autop-->
)があるかどうか調べて、記事中にこのコメントが見つかった場合、wpautop
関数をフィルターに加えて、コメントを消すようにしています。
参考にしたリンク先のコードは、逆にwpautop
関数が有効である場合に、コメントを入れることで無効化するというもので、今回のコードはこれをちょろっと書き換えてみただけですが、うまいこと想定通りの動きをしてくれています。
自動整形をオフにしていて、「するぷろ」や先般公開された「SLPRO X」を使って、もっとサクサク記事を書けるようにしたいという人には、かなり便利になるコードではないかと思うので、ぜひ取り入れてみてください。
2015年7月27日 追記
「SLPRO X」で試してみましたが、アプリ側でHTML自動クリーニングを実行しているせいか、コメントタグが投稿時に消失してしまい、上の方法だとwpautop
がオンになりませんでした。