自定义 Wordpress 查询中自定义帖子的顺序不符合预期

Order of custom posts in custom Wordpress query not as expected

我有一个自定义的 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);

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

orderby 字段引用名为 "publication_year" 的 date 字段,它只显示年份值 2015、2014、2013 等,但在数据库中包含完整的日期,如“ 2013-01-18" 和类似的。

现在,我通过上述查询得到的顺序是 2013、2014、2015 - 虽然 orderDESC,但我希望相反。如果我将其更改为 ASC,我将得到 2015、2014、2013!

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

publication_year 不是 wp_posts table 中的列。参见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