WordPressのクラシックエディタでは改行すると、勝手に<p>
</p>
や<br>
を挿入してくれる機能がありますね。でもhtmlを直接書いたり、ショートコードを使いたい時にも自動で挿入されてしまい、デザイン上妙な空白が開いたりしておかしくなることがあります。
テーマのfunctions.phpを編集する
p
タグやbr
を勝手に入れないようにするのに、プラグインを使う方法もありますがfunctions.phpに記述する方が簡単だと思います。
以下のコードをfunctions.phpに記述するだけでpタグやbrタグが自動で挿入されなくなります。
投稿や固定ページの本文(the_content
)で、pタグが勝手に挿入されるのを無効にする方法です。
//本文のwpautop関数を無効にする
remove_filter(‘the_content’,’wpautop’);
the_excerpt
フィルターフックを指定すると、投稿の抜粋でwpautopが無効になります。
//抜粋のwpautop関数を無効にする
remove_filter( 'the_excerpt', 'wpautop' );
これらを記述すると、投稿ページや固定ページの本文・抜粋でwpautop
を無効にすることができます。ウィジェット、カスタムフィールド、テーマでカスタムされた場所など)に自動挿入される <p>
タグは、この方法では除去できません。
固定ページのみ、特定のカスタム投稿タイプのみpタグ自動挿入を無効にする
上記コードを記述すると全てのwpautop関数が無効になってしまうので、投稿ページだけはpタグは挿入されてほしい、カスタム投稿ページだけはpタグを削除したいなど特定の箇所を制御したい場合などは以下のように指定します。
// pタグ制御
function wpautop_filter($content){
global $post;
$remove_filter = false;
$types = array('page','info'); //無効にしたい投稿タイプを指定
$post_type = get_post_type($post->ID);
if(in_array($post_type,$types)) $remove_filter = true;
if($remove_filter){
remove_filter('the_content','wpautop');
remove_filter('the_excerpt', 'wpautop');
}
return $content;
}
add_filter('the_content','wpautop_filter',9);
ショートコードに挿入されるpタグだけを無効にする
pタグは挿入されてもいいのだけれど、ショートコードの前後に挿入されるpタグは除去したい。。。ということもありました。
remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop', 99 );
//ショートコードにはpタグを挿入しない
add_filter( 'the_content', 'shortcode_unautop', 100 );
参考:
WordPressでエディタに自動生成されるタグ(<p>とか<br>)を制御する方法まとめ
【即解決】WordPressのショートコードがpタグで囲まれてしまうのを最も簡単に除去する方法
Contact Form 7でpタグが自動挿入されないようにする
Contact Form 7で生成されるコードにもp
タグが入ってしまうことがあります。これを無効にするには、wp-config.php
に以下を記述します。
define( 'WPCF7_AUTOP', false );
注意するのは記述する場所。wp-config.phpの最後の方にある以下の記述よりも前に上記のコードを記述します。
/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */
/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');
wpautopをページごとに無効にできるプラグイン Toggle wpautop
Toggle wpautopの使い方はシンプルです。
プラグインを有効化後、設定>投稿設定にToggle wpautopの設定メニューがあります。
wpautopを無効にする切り替えボタンを表示させる投稿タイプにチェックを入れます。
チェックを入れた投稿編集ページの公開パネル内に「Disable wpautop」が表示されます。wpautopを無効にしたい場合はチェックをいれます。
Advanced Editor Tools(旧TinyMCE Advanced)でもwpautop無効化あり
Advanced Editor Toolsブロックエディターでクラシックエディター機能を使うことができるプラグインです。
以下の項目にチェックを入れると投稿記事の本文中のpタグを無効にできます。