「WordPressは、余計なところまでPタグでラップされて困る」といった経験をされたことはありませんか?
WordPress日本語フォーラム
等々、p要素に絡んだ質問は少なくありません。
その中には、CSSと密接にかかわるような 問題もあります。
隣接セレクタ、兄弟セレクタ等を使用したい時に、対象要素がp要素でラップされてCSSが動作しなくなってしまう
p要素がimg子要素を持つ場合、現在のCSSでは、img子要素を持つp要素のスタイル設定は出来ない
等々、悩ましい
WordPressのユーザーは、p要素自動追加を避けたい時に、にどういった方法で対処しているのか
WordPressで、ラップを解除する典型例は、「the_contentフィルターを使って、正規表現でp要素を削除する,複雑なhtmlは、投稿本文から分離しカスタムフィールドなどに入力しておいて、ショートコードを使って呼び出すといった処理」が多いように思います。
しかし、正規表現を書くのは、誰にでもできる事ではありません。
javascriptなら、要素を指定して、親要素がpだったら、親pをDOMから削除なんてことが、シンプルにできるから この記事では、javascriptでp要素の除去を試みたいと思います。
jQuery
jQuery(function($){ $('img').each(function(){ if ( $(this).parent().is( "p" ) ) { $(this).unwrap(); } }); });
テーマで、スクリプトを追加する方法
functions.php
add_action( 'wp_print_footer_scripts', 'my_remove_p' ); function my_remove_p() { ?><script> jQuery( function ( $ ) { $( 'img' ).each( function () { if ( $( this ).parent().is( "p" ) ) { $( this ).unwrap(); } } ); } ); </script><?php }
Photo by Annie Spratt on Unsplash