wp_query按woocommerce上的日期元值排序

时间:2016-11-25 19:41:55

标签: wordpress woocommerce

我正在使用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上的强制转换成功,我也不确定排序功能

    有人有想法吗?

1 个答案:

答案 0 :(得分:0)

您可以将一些参数修改为meta_query,如解释Here。除了meta_type值之外,我找不到order_by参数。您可以在meta_key数组

中定义meta_query类型
  

type(string) - 自定义字段类型。可能的值包括“数字'”,“' BINARY'' CHAR'' DATE',' DATETIME',&# 39; DECIMAL',' SIGNED',' TIME',#39; UNSIGNED'。默认值为' CHAR'。

     

'类型' DATE适用于'比较'价值只有当   日期以YYYY-MM-DD格式存储,并以此格式进行测试。

$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名称不一样,我认为它需要。

希望它能给你一些提示!