WordPress  
  ワードプレス、動的に複数のカスタムフィールドで検索して別のカスタムフィールドの値で並べ変える方法
2018
29
Nov

ワードプレス、動的に複数のカスタムフィールドで検索して別のカスタムフィールドの値で並べ変える方法

最終更新日: 2020年1月27日

ワードプレスの絞込検索をする時、sqlを書ける人は直接データベースを触るのが簡単だと思います、私も複雑な検索の場合はそうしてきました。

今回はページ送りが面倒でしたのでwordpressのタグに頼ることにしました。

meta_queryで検索をかけても、目的が達成できなかったので、探している人もいるかと思います。

pre_get_postsにフックして使います。

今回はワードプレスの関数だけで、特定のカスタムフィールドで検索して別のカスタムフィールドの値で並べ変える方法です。

今回は動的にカスタムフィールドのキーを変える必要がありましたので変数をいくつか使っています。
サニタイズは別途する必要があります。


$paged = (get_query_var('paged')) ?: 1;
$args = array(
	'paged' => $paged,
	'post_type' => 'post',
	'meta_key' => $fieald, //並べ替えに指定するカスタムフィールドのキー
	'meta_query' => array(
		'w'=>array( 'key'=>$key,), //wは検索する条件の名前、なんでもよい。後で必要になる時もある。
		'f'=>array( 'key'=>$fieald,), //fは検索する条件の名前、なんでもよい。今回は後で使います。
		'relation'=>'OR' //ORかAND状況で選択
	),
	'posts_per_page' => $num, //ワードプレスの管理画面での設定と違う場合に必要。
                   //かつ、この場合は検索するカスタムフィールドの値で抽出する記事数が変動したので変数を使用。
	'orderby'=>array('f'=>'DESC'), //ここが今回のポイント。この条件で並べ替えます。複数指定することも可能です。
);

今回参考にしたサイトは本家のサイトです。名前を付けるというところを参考にしました。
関数リファレンス/WP Query – WordPress Codex 日本語版

 

top