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