我们的产品模板在将产品添加到购物车后显示四个交叉销售。如果产品没有定义四个交叉销售,那么任何差距都会被随机顺序标记为“通用交叉销售”自定义字段的产品填充。
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 ) )
即。 orderby从“rand”更改为“menu_order”。
为什么会发生这种情况,我该如何预防呢?
答案 0 :(得分:0)
问题是由"简单自定义发布订单"插件。
解决方案: 替换了"简单的自定义发布订单"使用"发布类型顺序" (相同的功能)。 更新查询以包含:
ContextThemeWrapper
查询现在返回随机顺序,但客户端仍然可以拖放以重新排列后端的产品订单。