WordPressの開発において、フィルターはWordPressの機能を変更または拡張するために使用することができます。WordPressから提供されるデータを受け取り、それを別のものに変えて、また渡すのです。
フィルターはWordPressをカスタマイズ可能にする大きな特徴のひとつです。フィルターは、WordPressのイベントに「フック」されるPHPコードの断片です。イベントがトリガーされると、フィルターがイベントフックによって生成されたデータ出力に適用されます。
プラグインやテーマの開発者によって広く使われている。しかし、もしあなたが開発者でないなら、ウェブからコード・スニペットを貼り付けて、あなたのサイトに新しい機能を追加することができます。これらの多くにはフィルターが含まれている。
WordPressのフィルターとは?
フィルターはWordPressサイトの特定の機能の初期設定を変更します。これは、受け取ったデータを操作し、ブラウザーに表示される前にそのデータを WordPress に返すことで行います。
例えば、フィルターはテキストの切り捨て、コンテンツのフォーマットの変更、投稿日へのリンクの添付、ページ上のブロックの変更、データベースから取得したオプションの変更などに使用できます。また、抜粋の長さを変更したり、関連投稿をメインコンテンツの下に配置したり、WooCommerceの価格を変更したりすることもできます。
フィルターはadd_filter()
関数を使って追加します。WordPressにはアクションを使用できる関数がいくつかありますが、最もよく使われるのはこれらの関数です:
add_filter()
: 関数をフックに添付します。remove_filter()
: 指定したフィルターフックに添付された関数を削除します。doing_filter(
): 現在実行中のフィルターを検出します。has_filter(
): フィルターが登録されているかどうかを調べます。
フィルターはプラグインやテーマの開発者がWordPressに機能を追加するために使用します。オンラインチュートリアルからコードスニペットを追加することで、テーマをカスタマイズするためにフィルターを使用することもできます。
注:初心者の方は、WordPressファイルを編集しないよう強くお勧めします。functions.phpファイルの編集に慣れていて、PHPの知識がある経験豊富なユーザーだけが、この方法を試してください。
初心者は、実行したいタスクを達成するためにプラグインを使うか、コードを編集するプロに相談するべきだ。
WordPressサイトのコードを編集する前に、コーディングエラーに備えてサイトをバックアップしておくことをお勧めします。バックアッププラグインをお持ちでない場合は、WordPressバックアッププラグインを比較した投稿をご覧ください。
また、テーマファイルに直接コードを追加しないことをお勧めします。そうしないと、次回テーマを更新したときにカスタマイザーが失われてしまいます。
代わりに、WordPressにカスタムコードを追加するためのコードスニペットプラグインを使うか、サイト固有のプラグインを作成するか、親テーマの代わりに子テーマを作成してそれを修正する必要がある。
カスタマイザーを失うことなくWordPressテーマを更新する方法については、こちらのガイドをご覧ください。
フック、アクション、フィルターの違いは?
WordPressにおけるフィルターについて理解を深めるには、フィルターが他の2つのキーワード、フックとアクションとどのように関連しているかを確認することが役に立つ。これら3つのキーワードを一緒に理解することで、「フィルター」というキーワードを少し理解しやすくなるでしょう。
フックはWordPressプラグインとテーマ開発の基礎です。開発者がカスタムコードをWordPressの特定の場所に「フック」し、コアファイルを編集することなくWordPressの動作を変更できる場所です。
フックには2種類ある。
- フィルターフックを使うと、何かを変更することができる。フィルターフックは、処理中のデータをインターセプトして、それを変更し、それを送り返すことができます。データベースやユーザーのブラウザーに送信される出力をフィルターするために使われる。
- アクションフックは、何かを実行させます。テーマやプラグインが有効化されたとき、投稿が公開されたときなどのイベントのときに実行されます。アクションが実行された後は、情報を返す必要はありません。
これらのアクションフックとフィルターフックは、WordPress コア、テーマ、プラグインがどのように動作するかの基盤です。開発者が初期設定の WordPress イベント、フィルター、アクションを柔軟に変更できるよう、これらのフックは連携しています。
開発者は、他の開発者がプラグインやテーマを拡張できるように、独自のカスタムアクションやフィルターを作成することもできます。
WordPressフィルターの例
フィルターとはどのようなものでしょうか?いくつか例を挙げよう。
特定のカテゴリーに属する投稿が表示されたときに、画像アイコンを表示したいとしよう。このシナリオでは、投稿が特定のカテゴリーに属しているかどうかをチェックする関数を作成します。もしそうなら、画像を表示する。
次に、その関数をthe_content
イベントにフックします。これで、the_content
イベントが発生するたびに、我々の関数が自動的にトリガーされ、the_content
イベントの出力をフィルターするようになる。
// First we hook our own function with the_content event
add_filter( 'the_content', 'wpb_content_filter' );
// Now we define what our function would do.
// In this example it displays an image if a post is in news category.
function wpb_content_filter( $content ) {
if ( in_category('news') )
$content = sprintf('<img class="news-icon" src="%s/images/news_icon.png" alt="News icon" title="" />%s', get_bloginfo( 'stylesheet_directory' ), $content);
// Returns the content.
return $content;
}
WordPressフィルターの使用例をもうひとつ紹介しよう。
このサンプルコードでは、フィルターget_the_excerptに
wpb_custom_excerpt
関数を追加しています。
function wpb_custom_excerpt( $output ) {
if ( has_excerpt() && ! is_attachment() ) {
$output .= wpb_continue_reading_link();
}
return $output;
}
add_filter( 'get_the_excerpt', 'wpb_custom_excerpt' );
さらに詳しく知りたい方は、フィルターを使ったWordPressガイドをご覧ください。例えば、WordPressのフィルターを使って実用的な何かを実現する方法を紹介したガイドをいくつかご紹介します:
- ログイン中のユーザーに異なるメニューを表示する方法
- 管理者を含むすべてのユーザーに対して管理バーを無効化する方法
- WordPressプラグインを自動更新する方法
- WordPressのログインヒントを無効化する方法
- 自動更新のメール通知を無効化する方法
WordPressには多くの定義済みフィルターがあり、開発者はWordPressコアの特定の箇所に独自のコードを追加することができます。WordPress プラグイン API は、利用可能なフィルターフックの広範なリストを提供しています。
この投稿が WordPress のフィルターについてより詳しく知っていただく一助となれば幸いです。また、WordPress の便利なヒントやトリック、アイデアに関する関連投稿は、以下の「Additional Reading」リストをご覧ください。
このガイドを気に入っていただけたなら、WordPress動画チュートリアルのYouTubeチャンネルの購読をご検討ください。Twitterや Facebookでもご覧いただけます。