web-dev-qa-db-ja.com

WP 4.0のmeta_value_num DESCおよびmeta_value ASCで並べ替え

注文するカスタム投稿タイプを作成しました

  1. custom-field-1、これはブール値であるため、その値は1または0で、DESCの順序(1から0)
  2. 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の投稿に使用しますか?

この「複数のカスタムフィールド値による順序付け」についてはここで詳しく説明しましたが、以前にサイトを検索していたときに適応できる類似の質問は見つかりませんでした。

3
okiedokey

新しいorderbyパラメータはWP_Queryに最適ですが、複数のmeta_keyに対して複数のorderbyはサポートされていません。

私は2、3のシナリオを経験し、さらにtracに入ってtracを作り、次のことを思いついた。

このまさしくその問題に関する問題のどれも答えられませんでした。また、これら2つのリンクから、meta_keyと投稿日のような別のフィールドによる順序付けの問題があるようです。私はまだこれを試していません。

2つのクエリを作成せずに、ここで2つの選択肢があると本当に思っています。

  • 彼の答えの@s_ha_dumで説明されているようにposts_orderbyフィルタを使うハック ここ

  • PHP usortを使った順序付けを利用することによって。ここでの考え方は、クエリを1つのmeta_keyでソートしてから返されたposts配列($ posts)を取り、ループが始まる前に2番目のmeta_keyでそれらをソートすることです。 the_postsフィルタを使用するか(一度実行したらフィルタを削除することを忘れないでください)、単にテンプレートで$postsの設定を解除し、実行後に並べ替えた投稿の配列で設定することができます

2
Pieter Goosen