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

WordPressのエディタでは改行すると自動で<p>〜</p>や<br>を挿入してくれる機能がありますね。でもhtmlを表示させたり、ショートコードを使ったりしたい時にも自動で挿入されてしまい、デザイン上妙な空白が開いたりしておかしくなることがあります。

pタグやbrを勝手に入れないようにするのに、プラグインを使う方法もありますがfunctions.phpに記述する方が簡単だと思います。

以下のコードをfunctions.phpに記述するだけでpタグやbrタグが自動で挿入されなくなります。

//本文のwpautop関数を無効にする
remove_filter(‘the_content’,’wpautop’);

//抜粋のwpautop関数を無効にする
remove_filter( 'the_excerpt', 'wpautop' );

固定ページのみ、特定のカスタム投稿タイプのみ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 Form7 自動的に挿入される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');

WordPress

Posted by 智次郎