Как показать только самую последнюю запись в моем архиве почтового типа?

Я зарегистрировал пользовательский тип сообщения и внутри моего archive-myCPT.php Я хочу получить только текущую опубликованную запись.

Вот соответствующий фрагмент из моего archive-myCPT.php :

 <?php if( have_posts() ){ $x = 1; while ( have_posts() ){ the_post(); if ( 0 === (int) $post->post_parent ) { get_template_part( 'inc/post-format/content-debate'); } 

Я попытался добавить это: query_posts('posts_per_page=1&order=DESC&orderby=date') до if( have_posts() ){ но я получаю последнее сообщение из сообщений по умолчанию в блоге не из моего CPT, а также добавляет также разбиение на страницы.

Как я могу получить только последнее опубликованное сообщение внутри моего CPT без разбивки на страницы?

Solutions Collecting From Web of "Как показать только самую последнюю запись в моем архиве почтового типа?"

Вы можете просто изменить основной запрос для своего настраиваемого архива типа post с помощью pre_get_posts () .

Код:

 function wpse124228_alter_ppp_order_for_mycpt( $query ) { if ( ! $query->is_main_query() || is_admin() ) return; if ( is_post_type_archive( 'mycpt' ) ) { //Only display 1 post on mycpt archive $query->set( 'posts_per_page', 1 ); //Most recent/current $query->set( 'orderby', 'date' ); $query->set( 'order', 'DESC' ); } } add_action( 'pre_get_posts', 'wpse124228_alter_ppp_order_for_mycpt' ); 

Это очень похоже на этот пример на странице codex. BTW не использует query_posts() , если вам нужно выполнить второй запрос с WP_Query , но для архива, который не нужен.

Дополнительная информация:

  • Template_Hierarchy: Custom_Post_Types_display
  • Post_Types: Custom_Post_Types
  • Шаблоны пользовательских шаблонов
  • Как создать страницу пользовательских типов сообщений в WordPress