Как я могу скрыть сообщения, которым больше 2 лет

Я хочу применить правило на своем сайте, которое отфильтровывает все сообщения в блогах, которым больше 2 лет.

Я вижу некоторые решения, которые включают в себя ручное размещение сообщений в категории и скрытие категории, но я хочу, чтобы решение полностью автоматизировалось.

Есть ли способ сказать WP, что всякий раз, когда вы захватываете сообщения, чтобы применить это правило:

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

благодаря

Solutions Collecting From Web of "Как я могу скрыть сообщения, которым больше 2 лет"

Вы можете использовать крюк 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('Ym-d', strtotime('-2 years')) . "'"; return $where; }); add_filter('getarchives_where', $callback ); } } 

Это позволит отфильтровать основные сообщения в сообщениях, чтобы вернуться к сообщениям старше двух лет.

Существует также вторая копия фильтра, использующая getarchives_where для фильтрации результатов виджетов архива.