「するぷろ」からの投稿が捗る! wpautopを限定的に有効化する方法

WordPressには自動整形を制御しているwpautopという関数があります。

通常、WordPressを使用して投稿する場合、このwpautopのおかげで、特に意識することなく、改段落や改行された記事を書くことができますが、意図しない表示になることもあり、わざと無効化している人も多いのではないでしょうか?

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がオンになりませんでした。

モバデビの最新情報をチェック