cocoonフック調査~get_additional_related_wp_query_argsの使い方と活用例
タナビーの高梨です。
WordPressのテーマ「Cocoon」には、テーマ改変なしでデザインや動作を拡張できる豊富なアクション・フィルターフックが用意されています。
分かる範囲で内容を調査したのでブログにまとめていこうと思います。
今回は関連記事カードのブロックで記事取得に使用される WP_Query の引数配列を生成・調整する処理の結果を変更できるフィルターフック
👉get_additional_related_wp_query_args
です
フックの概要
| フック名 | 発火タイミング |
|---|---|
| get_additional_related_wp_query_args | 関連記事カード描画時 |
発火条件
関連記事カード描画時に無条件に発火します。
使いどころ
関連記事のリストは WP_Query() で取得されますが、その際に使用される $args を自由に編集できます。
ただ、get_related_wp_query_argsのフィルターフックとの関係性が以下のようになっています。
function get_related_wp_query_args(){
......省略....
return apply_filters('get_related_wp_query_args', $args);
}
add_filter('get_related_wp_query_args', 'get_additional_related_wp_query_args');
function get_additional_related_wp_query_args($args) {
....省略.....
return apply_filters('get_additional_related_wp_query_args', $args);
}
テーマ内部では、
get_related_wp_query_args
↓
その結果をさらに加工するために
get_additional_related_wp_query_args
という 二段構えの構造 になっています。
そのため、
get_related_wp_query_args 側で優先順位を下げてフックすれば十分なのでは?
という疑問は正直あります。
引数
$args:(array)WP_Query()に渡す配列
カスタマイズコード例
リストの取得順を昇順(ASC)に変更する例
function customize_get_additional_related_wp_query_args ( $args ) {
$args['order'] = 'ASC';
return $args;
}
add_filter('get_additional_related_wp_query_args', 'customize_get_additional_related_wp_query_args' );
注意点
・元の引数構造を壊さないよう、変更したいキーのみ上書きするのがおすすめです
・WP_Query 特有の記述ミス(orderby や tax_query の構造など)をすると、新着情報が表示されなくなるため注意が必要
・get_related_wp_query_args との役割分担・存在意義がやや分かりづらい
まとめ
・get_additional_related_wp_query_args は関連記事カードで使用する WP_Query の引数を自由に変更できるフィルターフック
・表示件数、カテゴリ、投稿タイプ、ソート順など柔軟に調整でき、サイトに合わせた関連記事カードを作れる
・WP_Query の仕様に従って記述する必要があるため、破壊的変更をしないよう注意が必要
・get_related_wp_query_args との関係性がやや微妙