自定义Wordpress查询ASC / DESC中的帖子顺序与预期不符

时间:2019-01-18 17:22:54

标签: wordpress podscms

我有一个自定义的Wordpress查询,如下所示:

$args = array(
    'post_type' => 'publication',
    'post_status' => 'publish',
    'category_name' => 'my-category',
    'posts_per_page' => 20,
    'orderby' => 'publication_year',
    'order' => 'DESC',
    'paged' => $paged
);
$loop1 = new WP_Query($args);

我正在查询自定义帖子类型,只需要具有特定类别的帖子。 FWIW,我使用PODS创建了帖子类型。该查询可以通过一个小例子-order子句正常工作:

orderby字段是指名为“ publication_year”的date字段,该字段仅显示年份值2015、2014、2013等,但数据库中包含完整的日期,例如“ 2013-01- 18英寸或类似尺寸。

现在,我在上述查询中获得的顺序是2013、2014、2015-尽管orderDESC,但我希望与此相反。如果将其更改为ASC,我将得到2015、2014、2013!

我不明白-我希望升序为2013、2014、2015等。我在哪里错了?

1 个答案:

答案 0 :(得分:1)

publication_year不是wp_posts表中的列。请参见WordPress Database Description。如果orderby参数无效,则WordPress将退回到默认排序方式,即post_date列。

如果它是一个元值,则应使用:

$args = array(
    'post_type' => 'publication',
    'post_status' => 'publish',
    'category_name' => 'my-category',
    'posts_per_page' => 20,
    'orderby' => 'meta_value_num',
    'meta_key' => 'publication_year',
    'order' => 'DESC',
    'paged' => $paged
);

有关更多信息,请参见WordPress codex