WordPress Tips

WordPress 自動で挿入されるpタグを除去する方法

2019-04-10

本記事にはプロモーションが含まれています。

WordPress 自動で挿入されるpタグを除去する方法

ソラミ♪

Webエンジニアをやりつつ、デザインにも携わる株式会社コムワークの中の人。WordPress、Adobeアプリ、カワウソ好き。 2015年から当ブログ運営|2008年からGmail使用中|WordPress制作10年以上|15社以上のレンタルサーバー利用経験|100件以上のドメイン取得運用|サイト・ドメイン移転多数 »  もっとくわしく

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プラグインは3年ぐらい更新されていません。
またToggle wpautopは、ブロックエディター(Gutenberg)をサポートしていません。Classic Editorプラグインを利用している場合は有効です。

Toggle wpautopの使い方はシンプルです。

プラグインを有効化後、設定>投稿設定にToggle wpautopの設定メニューがあります。

wpautopを無効にする切り替えボタンを表示させる投稿タイプにチェックを入れます。

チェックを入れた投稿編集ページの公開パネル内に「Disable wpautop」が表示されます。wpautopを無効にしたい場合はチェックをいれます。

Advanced Editor Tools(旧TinyMCE Advanced)でもwpautop無効化あり

Advanced Editor Tools

Advanced Editor Toolsブロックエディターでクラシックエディター機能を使うことができるプラグインです。

以下の項目にチェックを入れると投稿記事の本文中のpタグを無効にできます。

  • この記事を書いた人
  • 最新記事

ソラミ♪

Webエンジニアをやりつつ、デザインにも携わる株式会社コムワークの中の人。WordPress、Adobeアプリ、カワウソ好き。 2015年から当ブログ運営|2008年からGmail使用中|WordPress制作10年以上|15社以上のレンタルサーバー利用経験|100件以上のドメイン取得運用|サイト・ドメイン移転多数 »  もっとくわしく

-WordPress Tips