ワードプレス>ワードプレスのフィルターフックの基本を理解する

ワードプレスのフィルターフックの基本を理解する

2018年5月25日

ワードプレスでテーマを作っているとフックという言葉を見かけます。

私はよくわからずにスルーしていましたが、勉強したので備忘録的にまとめます。

 

 

ワードプレスで自作テーマを作っていると、この機能のこれが邪魔だな!と思うことがあったりして、知らず知らずのうちにフィルターフックを使っていることがあります。

例えば、記事の概要を出力する時の…が邪魔だなといった時などにもフィルターフックが使われています。

 

フィルターフックとは

ワードプレスをインストールするとわかるのですが、大量のファイルがあります。私たちがテーマを作るときに

wp-contentフォルダの中のthemesフォルダにテーマを作っていきます。
基本的にはこのフォルダ以外を修正したりはしません。

その他のファイルはコアなファイルであり修正したりするのが危険です。

 

しかし、どうしてもコアな機能を編集したい場面があります。

 

そんな時フィルターフックを使えば、コアファイルを修正することなくコアな機能を修正することができます。

 

フィルターフックの簡単な例

先ほども例で出した、記事の抜粋文の表示方法を変更してみましょう。

普通に

<?php< the_excerpt(); ?>

で記事の抜粋文を出力すると […] という文字列が一緒に出力されます。

 

 

テーマによっては、というかこれってもの凄くダサいですよね?

 

 

これを変更したいと思った人は多いはずです。この時に使用するのがフィルターフックです。

 

 

 


function my_excerpt_more($more) {
    return '「この記事を読む!」';
}
add_filter('excerpt_more', 'my_excerpt_more');


 

わかりやすく、「この記事を読む!」というものに書き換えました。

これをfunctions.php に記載すれば、抜粋文を表示した時の挙動が変わります。

 

ここでadd_filterというのが使われていますが、これがフィルターフックと呼ばれるものです。

 

 

add_filter(‘excerpt_more’, ‘my_excerpt_more’);

 

 

ここでのadd_filterは、excerpt_moreというフィルターフック名に、実行させたい関数を登録しています。

 

excerpt_moreが実行されると、my_excerpt_moreが実行されます。

 

フィルターフックの一覧をここで確認できます

 

 

フィルターフックの挙動をもう少し見てみた

次はthe_title()に手を加えてみます。

 



add_filter('the_title','my_the_title');
function my_the_title($title){
  return '変更しました';
}


 

これをfunctions.phpに記載すると、the_title()を使用した時に記事のタイトルではなくて、変更しました という文字列が表示されます。

もともとある機能を完全に変更してしまいました。

 

これはでいけないので以下の変更します。

 

add_filter('the_title','my_the_title');
function my_the_title($title){
  return "記事のタイトルは" . "「" . $title . "」";
}

 

このようにすると

記事のタイトルは「記事のタイトル」

と出力されます。

 

 

本来ある機能に追加することができます。

 

 

簡単ではありますがフィルターフックの基本的な説明を終わりにしたいと思います。

私自身、フックに関してまだまだ学ぶべき点が多いのですが、とりあえずフィルターフックの基本的な流れを説明しました。