2017-05-13 9 views
2

woocommerce_my_account_my_orders_queryフィルターを使用して、カスタマーオーダーダッシュボードページでWCオーダーをフィルター処理しようとしています。日付、タイトルなどの注文はうまく動作しますが、カスタムメタキーと値で注文をフィルタリングしようとすると、正しい結果が返されません。カスタマーオーダーページのオーダーをメタ値で並べ替えることができません

add_filter('woocommerce_my_account_my_orders_query', 'af_filter_orders', 10, 1); 

function af_filter_orders($orders) { 

    $orders = array(
    'limit'  => -1, 
    'offset'  => null, 
    'page'  => 1, 
    'meta_key' => 'custom_meta_key', //meta type is plain string and i need results alphabetically. 
    'orderby' => 'meta_value', //meta_value_num 
    'order' => 'DESC', //ASC 
    'customer' => get_current_user_id(), 
    'paginate' => true 
    ); 
    return $orders; 

} 

私はWC v2.6を使用しています。まだ3倍でテストしていない。私はそれを使用する必要があります。

答えて

0

WooCommerce 3.0では、woocommerce_my_account_my_orders_queryget_postに使用されるargsの配列です。

この場合、$orders配列には正しく動作するためにmeta_queryが含まれている必要があります。 WooCommerce 3.0.xの中

$orders = array(
    'limit'  => -1, 
    'offset'  => null, 
    'page'  => 1, 
    'meta_key' => 'custom_meta_key', //meta type is plain string and i need results alphabetically. 
    'orderby' => 'meta_value', //meta_value_num 
    'order' => 'DESC', //ASC 
    'customer' => get_current_user_id(), 
    'paginate' => true, 
    'meta_query' => array(
      array(
       'key'  => 'custom_meta_key', //meta type is plain string and i need results alphabetically. 
       'value' => array(3, 4), 
       'compare' => 'IN', 
      ), 
    ), 
); 

woocommerce_my_account_my_orders_queryはあなたの引数が指定されているものに限定されているwc_get_ordersのために使用されています。 meta_keymeta_queryは受け入れ可能な引数ではありません。それで、うまくいきません。ただし、クエリは最後にはwoocommerce_order_data_store_cpt_get_orders_queryというフィルタを使用して処理できます。基本的にはWP_Queryです。ここで、woocommerce_order_data_store_cpt_get_orders_queryはargsのフィルタです。

P.S.
3.1.xでは、wp_parse_argswc_get_ordersであると思います。これは、パラメータとして渡すとmeta_keymeta_queryが機能することを意味します。

1
add_filter('woocommerce_my_account_my_orders_query', 'af_filter_orders', 10, 1); 

function af_filter_orders($orders) { 
    $orders = array(
     'limit' => -1, 
     'offset' => null, 
     'page' => 1, 
     'meta_query' => array(
      'relation' => 'AND', 
      array(
       'key' => 'custom_meta_key', 
       'value' => $value, 
       'compare' => 'LIKE' 
      ) 
     ), //meta type is plain string and i need results alphabetically. 
     'orderby' => 'meta_value', //meta_value_num 
     'order' => 'DESC', //ASC 
     'customer' => get_current_user_id(), 
     'paginate' => true 
    ); 
    return $orders; 
} 
関連する問題