2016-11-25 53 views
-1

我使用woocommerce銷售報紙,所以我添加了自定義字段以存儲發佈日期。我想顯示按發佈日期排序的產品。我用下面的代碼:wp_query按woocommerce上的日期元值排序

$args = apply_filters('woocommerce_related_products_args', array(
'post_type'   => 'product', 
'ignore_sticky_posts' => 1, 
'no_found_rows'  => 1, 
'posts_per_page'  => $posts_per_page, 
'meta_query' => array(
    array(
     'key'  => 'wccaf_de', 
     'value' => $name, 
     'compare' => 'LIKE', 
    ), 
), 
'meta_key' => 'wccaf_release_date', 
'meta_type' => 'DATE', 
'orderby' => 'meta_value_date', 
'order'  => 'ASC', 
'post__not_in'   => array($product->id) 
)); 
$products = new WP_Query($args); 

我也嘗試過使用作爲的add_filter我已經看到了https://konstantin.blog/2012/order-by-post-meta-casted-date-wp_query/ ,但沒有奏效。對於我來說,我覺得現在的問題是

  1. 上存儲的值不是一個日期,但字符串
  2. 即使在在的add_filter投成功,我不知道有關的排序功能

    有人有想法嗎?

回答

0

您可以修改一些參數到meta_query,作爲解釋Here。除order_by值外,我找不到meta_type參數。您可以在meta_query陣列中定義meta_key類型,

類型(字符串) - 自定義字段類型。可能的值有'NUMERIC','BINARY','CHAR','DATE','DATETIME','DECIMAL','SIGNED','TIME','UNSIGNED'。默認值是'CHAR'。

只有在日期格式爲YYYY-MM-DD且以此格式進行測試的日期爲 時,「類型」DATE才能與「比較」值BETWEEN一起使用。

$args = apply_filters('woocommerce_related_products_args', array(
    'post_type'   => 'product', 
    'ignore_sticky_posts' => 1, 
    'no_found_rows'  => 1, 
    'posts_per_page'  => $posts_per_page, 
    'meta_query' => array(
      array(
       'key'  => 'wccaf_release_date', 
       'value' => $name, 
       'compare' => 'LIKE', 
       'type' => 'DATE' 
     ), 
    ), 
    'meta_key' => 'wccaf_release_date',   
    'orderby' => array('meta_type'=> 'DATE'), 
    'order'  => 'ASC', 
    'post__not_in'   => array($product->id) 
    ) 
); 

小心你的meta_key的名字是不一樣的,我認爲它需要。

希望它給你一些提示!