我如何隐藏超过2年的帖子

时间:2017-05-26 作者:rgalpin

我想对我的网站应用一条规则,过滤掉所有超过2年的博客帖子。

我看到一些解决方案涉及手动将帖子放入类别并隐藏类别,但我想要一个完全自动化的解决方案。

有没有一种方法可以告诉WP,每当你抓住帖子来应用这个规则时:

if( !is_admin() ) { 
    select posts where post date > two-years-ago-today
}
谢谢

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

您可以使用pre_get_posts 钩子以修改主查询:

add_action( \'pre_get_posts\', \'filter_old_posts\' );
function filter_old_posts($query){
    if( !is_admin() && $query->is_main_query()){
         add_filter(\'posts_where\', $callback = function( $where = \'\'){
             $where .= " AND post_date > \'" . date(\'Y-m-d\', strtotime(\'-2 years\')) . "\'"; 
             return $where;
         });
         add_filter(\'getarchives_where\', $callback );
    }
}
这将过滤主要的查询帖子,以返回超过2年的帖子。

还有一个使用getarchives_where 筛选存档小部件结果。

结束