cocoonフック調査~get_info_list_argsの使い方と活用例

タナビーの高梨です。
WordPressのテーマ「Cocoon」には、テーマ改変なしでデザインや動作を拡張できる豊富なアクション・フィルターフックが用意されています。
分かる範囲で内容を調査したのでブログにまとめていこうと思います。
今回は新着情報ウィジェットで記事を取得するクエリーに渡す引数を編集できるフィルターフック
👉get_info_list_args
です
フックの概要
| フック名 | 発火タイミング |
|---|---|
| get_info_list_args | 新着情報ウィジェット表示時 |
発火条件
新着情報ウィジェットの表示タイミングで無条件に1回発火します。
使いどころ
新着情報のリストは WP_Query() で取得されますが、その際に使用される $args を自由に編集できます。
$args のデフォルトは設定によって異なりますが、例として以下のような値が渡されます。
array(7) {
["post_type"]=> string(4) "post"
["cat"]=> string(0) ""
["no_found_rows"]=> bool(true)
["ignore_sticky_posts"]=> bool(true)
["posts_per_page"]=> string(1) "5"
["offset"]=> int(0)
["action"]=> NULL
}
この配列を編集することで、新着情報ウィジェットの動作を柔軟に制御できます。
活用例:
・カテゴリーを限定した新着情報だけ表示したい
・カスタム投稿タイプの最新情報を表示したい
・表示件数やソート順を変更したい
・特定ページだけクエリの条件を変更したい
apply_filters呼び出し元のソースコード
lib/html-forms.php
$args = apply_filters( 'get_info_list_args', $args );引数
$args:(array)WP_Query()に渡す配列
カスタマイズコード例
リストの取得順を昇順(ASC)に変更する例
function customize_get_info_list_args ( $args ) {
$args['order'] = 'ASC';
return $args;
}
add_filter('get_info_list_args', 'customize_get_info_list_args' );注意点
・元の引数構造を壊さないよう、変更したいキーのみ上書きするのがおすすめです
・WP_Query 特有の記述ミス(orderby や tax_query の構造など)をすると、新着情報が表示されなくなるため注意が必要
まとめ
・get_info_list_args は新着情報ウィジェットで使用する WP_Query の引数を自由に変更できるフィルターフック
・表示件数、カテゴリ、投稿タイプ、ソート順など柔軟に調整でき、サイトに合わせた新着情報ウィジェットを作れる
・WP_Query の仕様に従って記述する必要があるため、破壊的変更をしないよう注意が必要