WEB制作のための情報サイト / unazuki Library

add_action()

基本構文と使い方(引数・実行結果)

基本構文

アクションフックにコールバック関数を登録します。指定したアクションフックに登録されたコールバック関数は、アクションフックが発火するタイミングで実行されることになります。

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');

※当サイトでは初期値とデフォルト値の言葉の定義を区別せず、原則統一して初期値を採用しています。

関連するテンプレートタグ

テンプレートタグ 説明
pre_get_posts メインクエリを実行する前に、クエリ内容を変更できるアクションフック
after_setup_theme テーマが読み込まれた後に発火するアクションフック
do_action() 指定したアクションフックに登録されたコールバック関数を呼び出して実行する