使用WP_Query按发布日期排序的帖子不包括Year

时间:2019-03-11 13:15:57

标签: wordpress

需要按发布日期订购商品,并按DAY订购商品。 现在,如果使用默认顺序:

            $args = array (
                'post_type' => 'post',
                'monthnum'  => '1',
                'orderby' => 'date',
                'order'   => 'ASC',                    
                'posts_per_page' => '-1'
            );

我们已按年份将帖子排序为:

21.01。 2016

03.01。 2017

16.01。 2018

....

但是只需要按天订购:

03 .01.2017

16 .01.2018

21 .01.2016

1 个答案:

答案 0 :(得分:1)

您可以使用posts_orderby来过滤ORDER BY子句。

这将进入主题functions.php文件:

function posts_orderby_day( $sql, $query ) {
    if ( 'day' === $query->get( 'orderby' ) ) {
        global $wpdb;
        $order = $query->get( 'order' );
        $sql = "DAY( {$wpdb->posts}.post_date ) $order";
    }
    return $sql;
}
add_filter( 'posts_orderby', 'posts_orderby_day', 10, 2 );

然后在您的$args中,将orderby设置为day

$args = array (
    'post_type'      => 'post',
    'monthnum'       => '1',
    'orderby'        => 'day', // set to "day"
    'order'          => 'ASC',
    'posts_per_page' => '-1',
);