Weblasts

カスタムフィールド内のWysiwygエディタのpタグもどうにかする

Wysiwygエディタ

WYSIWYG(アクロニム: ウィジウィグ)とは、コンピュータのユーザインタフェースに関する用語で、ディスプレイに現れるものと処理内容(特に印刷結果)が一致するように表現する技術。What You See Is What You Get(見たままが得られる)の頭文字をとったものであり、「is」を外したWYSWYG(ウィズウィグ)と呼ばれることもある。
近年では、コンテンツ管理システムでも使われるようになり、この場合は、入力画面と出力画面が一致するよう表現する技術を指す。

Wikipediaさん曰くだそうです。

wpのプラグイン「Advanced Custom Fields」を使う際、フィールドタイプで選べるものです
投稿の本文を入力する機能と同じものが使えるので画像を出力するときに便利だったりします。
しかし、このフィールドタイプもthe_contentやthe_excerptなどと同じようにpタグで囲んだ状態で出力してくれます。

かなり有難迷惑です。

このpタグを出力させない方法をここでは紹介しておきます。

remove_filter()関数

この関数を使って元から設定されてる処理を外してあげます。
詳しくは↓
特定のフィルターフックに付加されている関数を除去します。
例えばデフォルトのフィルター関数を取り除き、別の関数に置き換えできます。

WordPressのcodexにはこのように説明されていますが、今回は元々テンプレートタグなどについているフィルター(機能)を取り除く処理をしていきます

フィルターとは?

WordPressは様々な入出力を行う際にフィルターという処理を行っています
例としてあげるとしたら、the_contentで本文を出力しようとしたときに、pタグで囲んでくれる処理
このような処理をフィルターといいます

remove_filter()関数のパラメータ

パラメータは3つ入れることができますが実際に使うのは2つだと思いますのでここでは2つだけの書き方を紹介します

PHP

remove_filter('外したい関数名','外したい処理名');

この一行だけでOK

例えばthe_contentのpタグを出力しないようにするのであれば

PHP

remove_filter('外したい関数名','外したい処理名');
remove_filter('the_content','wpautop');

と書きます 「wpautop」がpタグを出力している処理なのでこの処理をなくしたい関数名と合わせて記述するだけで完了になります

the_fieldからpタグを外すには?

Advanced Custom Fieldsが出力するWysiwygエディタは「afc_the_content」で指定できます。 こいつに対してremove_filter()関数を実行すれば完了

最終的なコードはこちら

PHP

<?php
remove_filter ('acf_the_content', 'wpautop');
?>

このコードを出力する前の行に追加するだけ

Recommend Post