我们的产品模板在将产品添加到购物车后显示四个交叉销售。如果产品未定义四个交叉销售,则任何空白都将以随机顺序填充已标记为"通用交叉销售"自定义字段的产品。
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($generics(,查询如下所示:
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看起来像:
[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 ) )
即排序从"兰德"更改为"menu_order"。
为什么会发生这种情况,我该如何防止?
该问题是由"简单自定义后订单"插件引起的。
溶液:将"简单自定义邮政订单"替换为"邮政类型订单"(功能相同(。更新查询以包括:
"suppress_filters" => true
查询现在返回随机顺序,但客户端仍然可以拖放以在后端重新排列产品顺序。