1

我有一个自定义的 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字段是指date名为“publication_year”的字段,该字段仅显示年份值 2015、2014、2013 等,但在数据库中包含完整日期,如“2013-01-18”等。

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

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

4

1 回答 1

1

publication_year不是表中的列wp_posts。请参阅WordPress 数据库说明。如果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 法典

于 2019-01-18T17:46:35.260 回答