フックの利用

Wordpress

WordPressに欠かせない、フックについて、まとめたいと思います。
イッテミヨー♪\\\\٩( ‘ω’ )و ////
フックは、WordPressの処理の過程の様々なポイントに割り込んで、独自の処理(関数)を引っ掛けて(フックして)WordPressの処理の挙動を変更する仕組み・トリガーになります。

アクションフックとフィルターフック

アクションフック→特定のタイミングで処理を追加
フィルターフック→WordPressが出力するデータや処理を変更
2つとも、似たような処理をするのですが、大きな違いは、フィルターフックは、受け取った引数に必要な処理を行って、値を返す!ということです。
フム((¯ω¯*))フム

フックの処理の仕組み

処理の登録には、add_action() またはadd_fillter() という関数を利用します。
2つの関数は、引数とデフォルトの値が一緒です。

//アクションフック
add_action($hook_name, $function_to_add, $priority, $accepted_args)
//フィルターフック
add_fillter($hook_name, $function_to_add, $priority, $accepted_args)

こんな感じになります。↓

引数(型)初期値
$hook_name(string)フック名(必須)
$function_to_add(callable)追加したい関数(必須)
$priority(int)フックの優先順位。値が小さいほど先に実行される10
$accepted_args(int)フックした関数が受け入れられる引数の数1

フックには、優先順位を付ける必要がある場合があります。指定しない場合は10が初期値で、値が小さい方が優先されます。
また、受け取る引数はデフォルトで1ですが、1ではない場合登録する時点で指定する必要があります。

簡単なフックの例

下の例は、document_title_separator というフィルターにフックして、titleタグのセパレーターを
‘(*´꒳`*)’
これ↑に変更するコードです。

add_filter('document_title_separator', function(){
  $separator = '(*´꒳`*)';
  return $separator;
});

実行結果は、以下のようになります。

アクションフック・フィルターフックの主なもの

例えば、wp_head()やwp-footer()などの本体の関数は
wp-includes/general-template.php
に登録されています。
また、wp-includes/default-filters.php で、WordPressに登録されているフックを見ることが出来ます。
以下に例を挙げてみました。

フック名説明
wp_headwp_head関数が呼び出されるときに実行される。head要素内に追加したい場合に使用。
wp_enqueue_scriptswp_head関数が呼び出されるときに実行。CSSファイルやJavaScriptファイルの読み込みをしたいときに使用。
pre_get_postsWordPressがクエリを取得する前に実行される。WP_Queryの検索条件を変更したいときに等に利用。
the_content本文などが出力される前に呼び出される。
default_title新規投稿画面のデフォルトタイトルの設定が可能。
queryデータベースのほぼ全てのリクエストに適用される。
wp_footerwp_footer関数が呼び出されるときに実行。bodyタグの閉じタグ直前に要素の追加を可能とする。

最後に・・・

WordPressのフックは非常にたくさんあり全てを把握はとても難しく大変なので、その都度調べたり探したりする必要があるでしょう。
公式のWordPressCodexを参照したり、時にはソースコードを…読むこともありそうです。
(・ω・;)

プラグイン API/フィルターフック一覧
プラグイン API/アクションフック一覧

WordPressライフをお互い頑張りましょう♡

もしこの記事をいいね!と思ったら、
シェアとフォローお願いします٩(ˊᗜˋ*)و