Wordpress

【WordPress】フィルターフックとは?使い方やメリットを解説

2021年10月15日

しの

はじめまして、しのです。 WEBデザインやプログラミング、SEO、ブログ術に関する記事を主に書いています。 ブログの月間PVは約40000PV、月間収益は5桁です。 SEOで検索上位1位を約50件獲得(2023年6月時点)。

今回はWordPressの開発では欠かせないフィルターフックについての記事です。

ただ、

フィルターフックってよく聞くけどいまいちよくわからないなあ。

という方も多いのではないでしょうか。

「フック自体の概念」やアクションフックについてはこちらの記事で書いておりますのでご覧ください。

今回の記事ではフィルターフックが何なのか、フィルターフックを使うメリットは何なのかという点について深掘りしていきたいと思います。

それでは早速見ていきましょう。

フィルターフックとは

では早速ですが、フィルターフックとは「入ってきた値に対して何らかの加工を加えて返す」という役割を持っているWordPressの機能のことです。

えっどういうこと?

と思われたかもしれません。

もう少し砕いた言葉にすると、

Hello World!!という文章の前に、「こんにちは」という言葉を入れる

という感じです。

実際に例を見た方がわかりやすいかもしれませんので、以下の例を見ていきましょう。

以下ではthe_titleというテンプレートタグにフィルターフックをかけてみたいと思います。

add_filter('the_title',function($title){
 return 'こんにちは'.$title;
});

上記のように記述することで、

こんにちはHello World

このように記事のタイトルに「こんにちは」という文言を入れることができました。

簡単に言うとこれがフィルターフックです。

コードの解説

では上記のコードを詳しく見ていきましょう。

add_filter('the_title',function($title){

まず、add_filter()関数は、指定したフィルターフックに関数を登録する機能を持っています。

ここではあまり難しく考えずフィルターフックを使うときに使うんだなと覚えてもらえたらOKです。

第1引数はフィルターフックをかけるテンプレートタグを指定し、第2引数には実行する関数を記述します。

function()の引数にはフィルターフックをかける値を入力します。ここでは$titleとしています。

 return 'こんにちは'.$title;

そして二行目では、実際の処理内容を記述します。

ここでは「'こんにちは'という文字と$titleと文字列連結をしてね」という処理を書いています。

ここでポイントとなるのが「return」です。

アクションフックではreturnは不要でしたが、フィルターフックの場合はreturnが必須となりますので注意してください。

もしreturnを消してしまうと、以下のようにタイトル自体が消えてしまうことになります。

タイトルが消えました

このように、フィルターフックは通常通り処理できていたものを破壊することもできてしまうため、注意が必要です。

フィルターフックを使うメリット

では次にフィルターフックを使うメリットについてです。

フィルターフックを使うメリットは「色々なテンプレートファイルで使い回しができること」です。

例えば、index.phpやsingle.phpなどにはthe_title()というテンプレートタグを使用すると思いますが、そこでそれぞれのファイルのthe_title()に同じ処理を直接書いていくのは面倒ですよね。

そういった場合にfunctions.php、もしくはプラグインとして別のphpファイルに記述することで色々なテンプレートファイルやテーマで使い回すことが出来るためこれがフィルターフックを使うメリットとなります。

終わりに

いかがでしたでしょうか。

フィルターフックには色々な種類があります。

データベース関連で使えるものやWordPressの管理画面で使えるものなど数えきれないくらいの数があります。

詳しくはこちらのWordPress Codexに色々なフィルターフックが書かれているので、是非参考にしてみてください。

というわけで本日の記事は以上です( ͡° ͜ʖ ͡°)

  • この記事を書いた人
  • 最新記事

しの

はじめまして、しのです。 WEBデザインやプログラミング、SEO、ブログ術に関する記事を主に書いています。 ブログの月間PVは約40000PV、月間収益は5桁です。 SEOで検索上位1位を約50件獲得(2023年6月時点)。

-Wordpress
-