Почему этот файл Word.pp WordPress содержит цикл сообщений?

Я довольно новичок в разработке темы WordPress, и у меня есть следующий вопрос о странице page.php, содержащейся в файлах шаблонов (файл, описывающий шаблон для статических страниц)

Я анализирую файл page.php, содержащийся в 20-й по умолчанию теме, код этого файла:

<?php /** * The template for displaying all pages * * This is the template that displays all pages by default. * Please note that this is the WordPress construct of pages and that other * 'pages' on your WordPress site will use a different template. * * @package WordPress * @subpackage Twenty_Thirteen * @since Twenty Thirteen 1.0 */ get_header(); ?> <div id="primary" class="content-area"> <div id="content" class="site-content" role="main"> <?php /* The loop */ ?> <?php while ( have_posts() ) : the_post(); ?> <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <header class="entry-header"> <?php if ( has_post_thumbnail() && ! post_password_required() ) : ?> <div class="entry-thumbnail"> <?php the_post_thumbnail(); ?> </div> <?php endif; ?> <h1 class="entry-title"><?php the_title(); ?></h1> </header><!-- .entry-header --> <div class="entry-content"> <?php the_content(); ?> <?php wp_link_pages( array( 'before' => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentythirteen' ) . '</span>', 'after' => '</div>', 'link_before' => '<span>', 'link_after' => '</span>' ) ); ?> </div><!-- .entry-content --> <footer class="entry-meta"> <?php edit_post_link( __( 'Edit', 'twentythirteen' ), '<span class="edit-link">', '</span>' ); ?> </footer><!-- .entry-meta --> </article><!-- #post --> <?php comments_template(); ?> <?php endwhile; ?> </div><!-- #content --> </div><!-- #primary --> <?php get_sidebar(); ?> <?php get_footer(); ?> 

Мои сомнения:

1) page.php является шаблоном по умолчанию для статических страниц, но этот файл содержит цикл сообщений:

  <?php while ( have_posts() ) : the_post(); ?> 

Зачем?

WordPress разработан так, что для очень простой темы нужен только один шаблон: index.php . Если вы создаете тему с index.php , этот файл будет использоваться для рендеринга всего вашего контента: архивов, главной страницы блога, отдельных страниц и т. Д. И все, что ему нужно, в основном работать – это цикл.

Чтобы добиться этого, практически каждая часть контента в WordPress технически является «пост». Сообщения в блогах – это сообщения. Отдельные страницы – «сообщения». Даже результаты поиска – это «сообщения». И все, что вам нужно сделать, чтобы отобразить их, – это цикл через объекты, которые WordPress передает вам и выводит их.

Очевидно, что более полезно, если разные типы сообщений отображаются по-разному, поэтому WordPress предоставляет способы переопределения этого поведения по умолчанию. Если вы добавите шаблон page.php , WordPress выведет это для отдельных страниц вместо стандартного index.php . См. Диаграмму иерархии шаблонов, чтобы увидеть, какая страница шаблона будет использоваться для определенного типа публикации. (Но учтите, что все они попадают в index.php если не существует определенного шаблона.)

Из-за этого вы обычно видите цикл «post», используемый для любого типа шаблона в WordPress, даже если вы на самом деле не собираетесь зацикливаться более одного раза, и даже если вы на самом деле не выводят сообщения в блоге ,

На одной странице WordPress будет «только петля», и вы, вероятно, предположите, что у вас всегда будет одно сообщение для вывода, поэтому, если вы действительно этого захотите, вы можете заменить обычный цикл while кодом для вывода одно сообщение. Однако, поскольку WordPress по-прежнему предоставляет вам «набор» сообщений, которые просто содержат один пост, вам все равно нужно хотя бы вызвать the_post() чтобы загрузить этот единственный пост в переменные, которые используются для последующих выходных вызовов, таких как the_content() . Так как код практически идентичен циклу, и большинство людей уже написало цикл для своего шаблона index.php, обычно люди просто оставляют его как цикл, зная, что он будет выполняться только один раз.

Если вы разрабатываете тему, вам нужно хорошо ознакомиться с тем, как иерархия шаблонов и цикл работают вместе для вывода содержимого WordPress.

WordPress имеет много типов «сообщений». По умолчанию «типы сообщений» – это страница , вложение , nav_menu_item , пост и ревизия .

Вы даже можете создавать свои собственные типы сообщений, используя функцию register_post_type() . Зарегистрированные таким образом типы сообщений называются «пользовательскими типами сообщений».

Refs: