@toyvo_glumov

Как спрятать последний пост WP?

Сейчас использую такой код, чтобы прятать нужный пост (XXXX).

function wpb_exclude_from_everywhere($query) {
      if ( $query->is_home() || $query->is_feed() ||  $query->is_search() || $query->is_archive() ) {
          $query->set('post__not_in', array(XXXX));
      }
}
add_action('pre_get_posts', 'wpb_exclude_from_everywhere');


Но как правило это всегда самый последний, а приходится руками переписывать айдишник каждый раз. Как сделать, чтобы там был номер последнего опубликованного?
  • Вопрос задан
  • 43 просмотра
Решения вопроса 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
Есть функция wp_get_recent_posts() для получения последних записей сайта. По умолчанию функция получает 10 последних записей включая черновики, запланированные и записи на модерации, это можно изменить с помощью дополнительных аргументов

function wpb_exclude_from_main_query( $query ) {

	if ( ! is_admin() && $query->is_main_query() ) {

		$args = array(
			'numberposts' => 1,
			'post_type'   => 'post',
			'post_status' => 'publish',
		);

		$recent_posts = wp_get_recent_posts( $args );

		if ( is_array( $recent_posts ) && ! empty( $recent_posts ) ) {

			$exclude_ids = array();

			foreach ( $recent_posts as $key => $recent_post ) {
				$exclude_ids[] = $recent_post['ID'];
			}

			$query->set( 'post__not_in', $exclude_ids );
		}
	}
}
add_action( 'pre_get_posts', 'wpb_exclude_from_main_query' );
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
maksym1991
@maksym1991
WordPress adept
В вопросе уже есть половина ответа. Нужно узнать id последнего добавленого поста. Например так:
$latest_post = get_posts('post_type=post&numberposts=1');
echo $latest_post[0]->ID;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы