选中Pre_Get_Posts中的Post_Date

时间:2012-06-04 作者:Lee Ora

我想使用pre\\u get\\u posts过滤器更改提要的顺序。但我想排除比今天早的日期。我知道如果日期是在元键中,但日期是在post\\u date中,怎么能做到这一点。如何检查post\\u date以仅显示晚于今天的帖子?该网站显示未来的发布日期。

<?php 
function feedFilter($query) {
    if ($query->is_feed) {
        $query->set(\'order\',\'ASC\');
    }
 
    return $query;
}
add_filter(\'pre_get_posts\',\'feedFilter\');

?>

2 个回复
SO网友:Chip Bennett

你不能真的检查post_date 在里面pre_get_posts, 因为,好吧,动作在之前激发(pre_...) 这些帖子实际上已经被取回(。。。get_posts). :)

但是,您可以使用$query->set() 向查询中添加日期参数。这是从an example in the WP_Query() Codex entry:

<?php
function wpse54142_filter_pre_get_posts( $query ) {
    if ( is_feed() ) {
        $today = getdate();
        $query->set( \'year\', $today[\'year\'] );
        $query->set( \'monthnum\', $today[\'mon\'] );
        $query->set( \'day\', $today[\'mday\'] );
    }
    return $query;
}
add_filter( \'pre_get_posts\', \'wpse54142_filter_pre_get_posts\' );
?>

SO网友:Milo

下面是一个使用posts_where 过滤器:

function wpa54142_feed_filter( $query ) {
    if ( $query->is_feed ) {
        $query->set( \'order\', \'ASC\' );
        add_filter( \'posts_where\', \'wpa54142_filter_where\' );
    }
    return $query;
}
add_filter( \'pre_get_posts\', \'wpa54142_feed_filter\' );

function wpa54142_filter_where( $where = \'\' ) {
    $today = date( \'Y-m-d\' );
    $where .= " AND post_date >= \'$today\'";
    return $where;
}

结束

相关推荐

设置页中的AJAX(未定义UPDATE_OPTION)

我正在通过ajax请求插件的php文件,它应该使用update\\u option()保存一些数据,但php抛出了一个错误:Call to undefined function update_option() 我猜当我用ajax WP调用我的php文件时,不会加载它的函数。。。还是什么?干杯