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 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');