アクションフックにコールバック関数を登録します。指定したアクションフックに登録されたコールバック関数は、アクションフックが発火するタイミングで実行されることになります。
add_action($hook_name,$callback,$priority,$accepted_args)| 引数 | 必須/任意 | 引数に指定するもの |
|---|---|---|
| 第1引数 $hook_name | 必須 | アクションフックの名前(文字列)初期値:現在の投稿オブジェクト |
| 第2引数 $callback | 必須 | アクションフック発火時に実行したいコールバック関数名(文字列) |
| 第3引数 $priority | 任意 | コールバック関数を実行する優先順位(整数)数値が低いほど優先順位が高い。同じ数値を指定した場合、追加された順番に実行される。 初期値:10 |
| 第4引数 $accepted_args | 任意 | コールバック関数に渡す引数の数(整数)初期値:1 |
アクションフックにコールバック関数を登録します。
下記コードはメインクエリを任意の条件に上書きする処理です(functions.phpに記述)。10行目でアクションフックpre_get_postsにコールバック関数news_postsを登録しています。1~9行目はnews_postsの定義です。pre_get_postsはメインクエリをデータベースにリクエストする前に発火するアクションフックで、news_postsはメインクエリの内容を上書きする処理が書かれています。(newsというカスタム投稿タイプにおいて1ページあたりの投稿件数を8件にしています)
function news_posts($query) {
if (is_admin() || ! $query->is_main_query()) {
return;
}
if ($query->is_post_type_archive('news')) {
$query->set('posts_per_page', '8');
return;
}
}
add_action('pre_get_posts', 'news_posts');※当サイトでは初期値とデフォルト値の言葉の定義を区別せず、原則統一して初期値を採用しています。