2017-11-13 10 views
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の変更を。

なぜこのようなことが起こり、どのように防止できますか?

+1

args配列にこのパラメータを追加してみてください: "suppress_filters" => true、 –

+0

@OfirBaruchありがとうございます。 orderbyは "menu_order"に変更されます –

+0

WPライブラリファイル(テーマ/プラグイン以外)に変更を加えた可能性はありますか? –

答えて

0

この問題は、「Simple Custom Post Order」プラグインによって発生しています。

解決方法: 「単純なカスタム郵便注文」を「郵便番号の注文」(同じ機能性)に置き換えました。インクルードする 更新クエリ:

"suppress_filters" => true 

クエリは現在、ランダムな順序を返しますが、クライアントはまだバックエンドでの製品の順序を変更するためにドラッグ&ドロップすることができます。