仅显示当前日期之后的帖子

时间:2021-06-15 作者:rikart

我的所有帖子都有一个名为date-start-custom. 自定义字段的值采用日期格式YYYY-MM-DD HH:MM (例如:2021 06月15日14:30),我只想列出日期晚于当前日期的帖子。

我已经在修改查询,将帖子从最早排序到最晚排序,我希望可以在同一个查询中这样做。

这就是我的代码当前的样子:

add_action( \'pre_get_posts\', \'filter_posts\' );
function filter_posts( $query ) {
    if( is_category() && !is_admin() && $query->is_main_query() ) {
        $query->set( \'posts_per_page\',\'10\' );
        $query->set( \'orderby\',\'meta_value_num\' );
        $query->set( \'meta_key\',\'date-start-custom\' );
        $query->set( \'order\',\'ASC\' );
    }
    return $query;
}
我早些时候在谷歌上搜索了一下,发现this question 我有一个答案,但这对我来说并不管用。这是我尝试的代码,但不起作用:

add_action( \'pre_get_posts\', \'filter_posts\' );
function filter_posts( $query ) {
    $now = date("Y-m-d H:i");
    if( is_category() && !is_admin() && $query->is_main_query() ) {
        $query->set( \'posts_per_page\',\'10\' );
        $query->set( \'orderby\',\'meta_value_num\' );
        $query->set( \'meta_key\',\'date-start-custom\' );
        $query->set( \'meta_value\', $now );
        $query->set( \'meta_type\',\'DATE\' );
        $query->set( \'meta_compare\',\'>=\' );
        $query->set( \'order\',\'ASC\' );
    }
     return $query;
}

1 个回复
最合适的回答,由SO网友:rikart 整理而成

结果是meta_query 就是要走的路。这是我用来让它工作的代码。

add_action( \'pre_get_posts\', \'filter_posts\' );
function filter_posts( $query ) {
    $now = date("Y-m-d H:i", strtotime(\'+2 hours\'));
    if( is_category() && !is_admin() && $query->is_main_query() ) {
        $query->set( \'posts_per_page\',\'10\' );
        $query->set( \'orderby\',\'meta_value_num\' );
        $query->set( \'meta_key\',\'date-start-custom\' );
        $query->set( \'meta_query\', array(
            array(
                \'key\' => \'date-start-custom\',
                \'compare\' => \'>=\',
                \'value\' => $now,
                \'type\' => \'DATE\'
            )
        ));
        $query->set( \'order\',\'ASC\' );
    }
     return $query;
}

相关推荐

在WP_QUERY中添加用户权限条件

我的WP\\u查询有点困难,其中包括一个meta\\u查询,用于根据ACF用户字段限制帖子,但如果用户可以“编辑\\u帖子”,则显示所有帖子。从下面的代码中可以看出,前两个数组在以下位置工作良好:;在ACF字段中选择当前用户ID;或ACF用户字段为空,因此值为“”;或当前用户功能为“编辑帖子”如果存在这三种情况中的任何一种,则相应地显示帖子。这是第三种情况,它不起作用,需要一些帮助。这是我目前的代码: $user_exception = current_user_can(\'edit_posts\'