先週の特定のメタ値(mb_home!= 0)を持つ投稿とカスタム投稿タイプを選択し、それらをmb_homeで並べ替えます。それらが同じmb_home値を持っているなら、私はそれらを日付順に並べるべきです。どちらの順序もDESCである必要があります。
私はこのクエリを使用していますが、それだけでは動作しません:
$query = new WP_Query( array(
'post_type' => array ('post', 'aggregato'),
'posts_per_page' => 13,
'post__not_in' => $linked_posts,
'meta_key' => 'mb_home',
'orderby' => 'meta_value_num date',
'order' => 'DESC',
'meta_query' => array(
array(
'key' => 'mb_home',
'value' => '0',
'compare' => '>',
)
),
'date_query' => array(
'after' => '1 week ago',
)
));
date
をドロップして'order by' => 'meta_value_num'
を使用した場合、クエリはmb_home DESCによって正しく順序付けされた結果を返してくれます。しかし、それらが同じmb_home値を持つ場合、それらは日付ASCによって順序付けられます。
この構文を使用して、商品の注文方法を変更しようとすると、次のようになります。
'orderby' => array( 'meta_value_num' => 'DESC', 'date' => 'DESC' ),
上記のorderby文とorder文の代わりに、mb_home値を完全に無視してDESCに戻るだけです。
これらすべての結果は、meta_value
ではなくmeta_value_num
でも同じです。何も変わりません。
どうか、私にいくつかの指針を与えてください。私はこれをほぼ一ヶ月間過ごしてきましたが、すべてを試しても成功しませんでした。
ああワードプレスのマスター!私はあなたの助けを呼ぶ!
Moでこれを行うにはposts_orderby
フィルタを使用する必要があります。
function wpse159469_posts_orderby( $orderby, $query ) {
return implode( ' DESC,', explode( ',', str_replace( array(' ASC', ' DESC' ), '', $orderby ) ) ) . ' DESC';
}
それからあなたの質問のまわりで:
add_filter( 'posts_orderby', 'wpse159469_posts_orderby', 10, 2 );
$query = new WP_Query( array( // etc
remove_filter( 'posts_orderby', 'wpse159469_posts_orderby', 10 );