Advanced Custom Fields WYSIWYGエディタのpタグ削除
- WordPress -
2023.09.06
- Advanced Custom Fieldsで作ったカスタムフィールドに「WYSIWYG(ウィジウィグ)エディタ」を使っていて、
- エディタに入力した内容をechoで出力したら、勝手にpタグで挟まれていた...
こんなふうに、pタグ自動挿入に悩まされている方へ。
具体例をあげると、このようにAdvanced Custom Fieldのフィールドを作ったとして、
エディタで内容を入力して、ループの中でget_field()してechoしたら...
archive-faq.php$acf_field = get_field( 'faq' );
echo $acf_field;
自分で書いた覚えのないpタグで挟まれていた...という状況です。
Advanced Custom Fields WYSIWYGエディタのpタグを削除
get_field()の仕方を少し変えるだけで実現できます。
もともとこのようにしていたものを、
BEFORE$acf_field = get_field( 'faq' ); // フィールド名が'faq'の場合
echo $acf_field;
このように変えます。ポイントは第3引数にfalseを放り込むこと。
AFTER$acf_field = get_field( 'faq', $post->ID, false );
echo $acf_field;
これでechoしてみると、pタグが消えたことが確認できました。
pタグは削除したいけど改行は反映させたい場合
ただ、falseにすると、こんどはエディタ上で改行して保存してもフロント表示では改行が反映されなくなります。
↓
pタグは要らないけど、改行の反映は必要
そんなときは、echoの仕方を少し変えます。
AFTER$acf_field = get_field( 'faq', $post->ID, false );
echo nl2br( $acf_field );
PHPのnl2br関数で改行部分にbrタグを挿入したHTMLが返ってくるので、これで改行がフロントへ反映されるようになりました。
この場合はesc_html()でエスケープ処理を施すとなお良しですね。
AFTER$acf_field = get_field( 'faq', $post->ID, false );
echo nl2br( esc_html( $acf_field ) );
・・・
以上、Advanced Custom FieldsのWYSIWYGエディタで自動挿入されるpタグを削除する方法と、改行を反映させる方法でした。