目次
1. WordPress の wpautop
関数
WordPress には wpautop という関数があります。
以下のような処理をしてくれる関数です。
- 第一引数として渡された文字列内で、空行で区切られた部分を1つの段落とみなし、その段落部分を
<p>
と</p>
で囲んだ文字列に変換して返してくれます。 - 第二引数に
true
を指定しておくと、1の変換後に残っている改行文字を<br />
に変換しておいてくれます(デフォルトでtrue
になっています)。
例えば、変換前の文字列が以下の場合は、
春が来た
どこに来た
山に来た
次のように変換されます。
<p>春が来た<br>
どこに来た</p>
<p>山に来た</p>
2. WordPress は投稿や固定ページの本文に対して wpautop
関数を実行します
WordPress は投稿や固定ページの本文に対するフィルターとしてこの関数をセットしているため、何もしないとこの変換が実行される状態になっています。(厳密には「抜粋」に対しても適用しています)
参考:default-filters.php in tags/4.9.2/src/wp-includes – WordPress Trac
3. 本文に対する wpautop
関数を無効にする方法
投稿や固定ページの本文に対する apautop
関数を無効にするためには、functions.php
に以下を記述して the_content
フィルターフックからこの関数を取り除きます。
remove_filter( 'the_content', 'wpautop' );
「抜粋」に対する apautop
関数を無効にするためには、functions.php
に以下を記述します。
remove_filter( 'the_excerpt', 'wpautop' );
4. 特定の固定ページに対してのみ wpautop
関数を無効にする方法
特定の固定ページに対してのみ wpautop
関数を無効にしたい場合は、wp_head
アクションフックを使うとよさそうです。
wpautop
関数を無効にしたい固定ページの ID が、1, 2, 3 の場合は、functions.php
に以下のように記述します。
add_action( 'wp_head', function() {
if (is_page( array(1, 2, 3) )) {
// 本文
remove_filter('the_content', 'wpautop');
// 抜粋
remove_filter('the_excerpt', 'wpautop');
}
});
5. 関連するソースコード
general-template.php in tags/4.9.2/src/wp-includes – WordPress Trac
wp_head
関数内で、wp_head
アクションフックが実行されていることが分かります。
post-template.php in tags/4.9.2/src/wp-includes – WordPress Trac
the_content
関数内でthe_content
フィルターフックが実行されていることが分かります。
関連
スポンサードリンク