0
商品テンプレートにカートに商品を追加した後、4回のクロスセルが表示されます。プロダクトに4つのクロスセルが定義されていない場合、「generic cross sell」カスタムフィールドがマークされたプロダクトは、ランダムな順序で埋められます。WooCommerce orderby rand not working
remove_all_filters('posts_orderby'); // suggested by other answers
$args = array(
'post_type' => 'product',
'orderby' => 'rand',
'order' => 'desc',
'posts_per_page' => $gaps_to_fill,
'post__not_in' => $posts_to_exclude,
'meta_query' => array(
array(
'key' => 'is_generic_cross_sell',
'compare' => '==',
'value' => '1'
)
)
);
$generics = new WP_Query($args);
if($generics->have_posts()) :
while ($generics->have_posts()) : $generics->the_post();
wc_get_template_part('content', 'product-modal');
endwhile;
endif;
wp_reset_query();
私がしますprint_r($ジェネリック)を実行した場合、クエリは次のようになります。
WP_Query Object ([query] => Array ([post_type] => product [orderby] => rand [order] => desc [posts_per_page] => 4 [post__not_in] => Array ([0] => 908) [meta_query] => Array ([0] => Array ([key] => is_generic_cross_sell [compare] => == [value] => 1)))
しかしquery_vars次のようになります。 "ランド" を "menu_order" から
[query_vars] => Array ([post_type] => product [orderby] => menu_order [order] => ASC [posts_per_page] => 4 [post__not_in] => Array ([0] => 914) [meta_query] => Array ([0] => Array ([key] => is_generic_cross_sell [compare] => == [value] => 1))
すなわちORDERBYの変更を。
なぜこのようなことが起こり、どのように防止できますか?
args配列にこのパラメータを追加してみてください: "suppress_filters" => true、 –
@OfirBaruchありがとうございます。 orderbyは "menu_order"に変更されます –
WPライブラリファイル(テーマ/プラグイン以外)に変更を加えた可能性はありますか? –