注文するカスタム投稿タイプを作成しました
custom-field-1
、これはブール値であるため、その値は1
または0
で、DESC
の順序(1から0)custom-field-2
、これにはテキストが含まれ、注文されることになっていますASC
(AからZ)最初の質問:
より強力なORDERBYパラメーターがWordPress 4.0で導入されました。これは、新しいORDERBY機能を使用して作成できますか?
そうでない場合、2番目の質問:
最善のアプローチは何ですか? meta_query
で降順でcustom-field-1
、次にcustom-field-2
で昇順で投稿を並べるにはどうすればよいですか?
編集:
または、WP_Query
の2つのインスタンスを使用するオプションになります。1つはcustom-field-1 value = '1
'の投稿に、もう1つは値0
の投稿に使用しますか?
この「複数のカスタムフィールド値による順序付け」についてはここで詳しく説明しましたが、以前にサイトを検索していたときに適応できる類似の質問は見つかりませんでした。
新しいorderby
パラメータはWP_Query
に最適ですが、複数のmeta_key
に対して複数のorderby
はサポートされていません。
私は2、3のシナリオを経験し、さらにtracに入ってtracを作り、次のことを思いついた。
make.wordpress.org wordpress 4.0におけるより強力な注文 /
このまさしくその問題に関する問題のどれも答えられませんでした。また、これら2つのリンクから、meta_key
と投稿日のような別のフィールドによる順序付けの問題があるようです。私はまだこれを試していません。
2つのクエリを作成せずに、ここで2つの選択肢があると本当に思っています。
彼の答えの@s_ha_dumで説明されているようにposts_orderby
フィルタを使うハック ここ
PHP usort
を使った順序付けを利用することによって。ここでの考え方は、クエリを1つのmeta_key
でソートしてから返されたposts配列($ posts)を取り、ループが始まる前に2番目のmeta_key
でそれらをソートすることです。 the_posts
フィルタを使用するか(一度実行したらフィルタを削除することを忘れないでください)、単にテンプレートで$posts
の設定を解除し、実行後に並べ替えた投稿の配列で設定することができます