Codex

Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

Страницы

Эта страница помечена как незавершённая. Вы можете помочь проекту, дополнив её.

В WordPress можно создавать страницы (pages) или записи (posts). Когда вы пишете обычную запись в блог - вы создаёте запись. Записи автоматически появляются на главной странице в обратном хронологическом порядке.

Страницы же предназначены для такого содержимого как "Обо мне", "Контактная информация" и тому подобное. Страницы находятся вне нормальной хронологической последовательности записей и часто используются для нечувствительной к хронологии информации - той, которая всегда востребована. С помощью страниц можно организовать и управлять любым количеством содержимого.

Также можно привести такие примеры как страницы об авторском праве, лицензионные соглашения, правила использования, информации о сайте. Кстати, хорошим правилом является наличие страницы с информацией о сайте или компании и/или страницы с контактными данными. Вот один из советов от Lorelle (на английском языке).

В целом, страницы очень похожи на записи - и те и другие имеют название и содержимое и могут использовать шаблоны представлений (Presentation Templates) для сохранения целостного вида сайта. Однако страницы имеют несколько ключевых отличий от записей.

О страницах коротко

Чем страницы являются и что могут:

  • Страницы являются контейнером для содержимого, которое не зависит от времени.
  • Страницы могут быть организованы в другие страницы, а также Подстраницы.
  • Страницы могут использовать различные шаблоны, которые могут включать в себя файлы шаблонов, метки шаблона (Template Tags) и код PHP.

Чем страницы НЕ являются и что НЕ могут:

  • Страницы - не записи. Они не проходят циклически через главную страницу. Примечание: Включать записи в страницы можно с помощью модуля Inline Posts Plugin.
  • Страницы - не пункты меню, даже если список страниц выводится на месте навигации. Для создания полноценного навигационного меню существует отдельный механизм.
  • Страницы не могут быть связаны с рубриками и метками. Организационная структура опирается только на иерархию.
  • Страницы - это не файлы. Они сохраняются в базе данных точно так же, как записи.
  • Хотя в шаблон страницы можно добавить код PHP, в саму страницу нельзя добавить код так, чтобы при этом он ещё и работал. Примечание: Этого можно достичь, используя модуль, работающий с PHP, такой как Exec-PHP или RunPHP

Создание страниц

Для того чтобы создать страницу войдите в Wordpress с достаточными привилегиями для создания статей. Выберите Administration > Pages > Add New для того чтобы начать работу с новой страницей.

Изменение URL или слага (Slug) страниц

С версии 2.5 смена URL страниц стала менее интуитивной. Если у вас включены пермалинки (Permalinks) и вы выбрали настройку Day and Name(Нажмите Settings и в открывшемся списке Permalinks), то пермалинк автоматически покажется под названием записи, когда вы начнёте печатать в теле записи (не только в заголовке).

Несмотря на то, что вы можете выбрать несколько разных настроек пермалинков или вообще их не задействовать, для того чтобы редактировать URL страницы, вы должны сделать следующее:

  1. Создать страницу с помощью Write > Page.
  2. Опубликовать её, нажав Publish.
  3. Перейти в Manage > Pages.
  4. Нажать Edit рядом со страницей.
  5. Посмотреть на пермалинк под заголовком и нажать Edit, чтобы его поменять.

Таким образом, если у вас не включено использование пермалинков, вы должны опубликовать ваши страницы перед тем как устанавливать URL.

Вывод страниц на сайте

WordPress способен автоматически создавать список страниц сайта, например в боковой колонке, используя метку шаблона называемую wp_list_pages(). Прочтите wp_list_pages для более подробной информации, в том числе как:

  • Сортировать список страниц. Полная настройка порядка вывода описана в секции "Page Order" административной панели Write > Page.
  • Исключать из вывода или прятать страницу
  • Управлять отображением страниц, то есть выводить ли все страницы или некоторые подстраницы.
  • Определять насколько глубоко список уходит в иерархию страниц.

Естественно, вы можете определять ссылки на страницы вручную используя HTML-ссылки. Например, если вы хотите вывести страницу об авторских правах в "подвале", ссылка может быть такой:
Если пермалинки НЕ настроены

<a title="Copyright information" href="wordpress/?page_id=14">Copyright 1996-2006</a>

Если пермалинки настроены

<a title="Copyright information" href="wordpress/copyright/">Copyright 1996-2006</a>

Примечание: Файл .htaccess должен быть доступен для записи для страницы пермалинков, иначе каждый раз, когда вы создаёте новую страницу, вам необходимо будет править .htaccess вручную.

Структурирование страниц

Так же как в рубриках могут быть подрубрики, в страницах могут содержаться подстраницы (или дочерние страницы, если так удобнее), вместе создавая иерархию страниц.

Например, предположим вы создаёте сайт для продавца турпутёвок и хотели бы иметь отдельную страницу для каждого континента и страны, куда могут продаваться путёвки. Вы можете начать с создания страницы "Африка" на которой будет общее описание о путешествии на континент. Затем вы создаёте страницы, вложенные в эту, то есть подстраницы, со странами "Лесото", "Того", "Камерун" и "Свазиленд". Затем в таком же ключе вы создаёте страницу "Южная Америка" с подстраницами "Бразилия", "Аргентина" и "Чили". И вот что получится:

  • Африка
    • Камерун
    • Лесото
    • Свазиленд
    • Того
  • Южная Америка
    • Аргентина
    • Бразилия
    • Чили

Для того, чтобы начать, перейдите в Administration > Write > Write Page , в верхнем правом углу панели и нажмите выпадающий список "Page Parent". Этот список содержит перечень всех созданных страниц. Для преобразования текущей страницы в подстраницу, или наоборот, для преобразования в родительскую страницу выберите необходимый пункт из выпадающего меню. Текущая страница станет дочерней по отношению к выбранной.

Когда страницы выводятся, все дочерние страницы будут располагаться непосредственно под родительскими. Пермалинки при этом также будут отражать иерархическую структуру этой страницы.

В нашем примере для страницы "Камерун" пермалинк будет такой:

http://example.com/africa/cameroon/

Шаблоны страниц

Отдельные страницы могут использовать собственный шаблон страницы (файл-шаблон PHP, например, snarfer.php) который можно включить в создаваемую тему (см. ниже Создание собственных шаблонов страниц). Вновь созданный шаблон будет перекрывать шаблон по умолчанию page.php.

См. ниже Какой шаблон используется для показа отдельных страниц? для понимания того, как именно будет использован шаблон. Но лучше сначала прочтите нижеследующее и ответ будет понятен. :)

WordPress может быть настроен на использование разных шаблонов для разных страниц. Внизу административной панели Write > Page (или на боковой панели - зависит от версии) имеется выпадающее меню "Page Template", в котором можно выбрать шаблон, используемый данной страницей.

Примечание: Чтобы выбор шаблона работал необходимо наличие хотя бы одного собственноручно созданного шаблона для данной темы (см. ниже Создание собственных шаблонов страниц). Если же все условия выполнены, но выбора шаблона не видно, попробуйте вновь активировать текущую тему.

Шаблоны встроенной темы по умолчанию

Встроенная тема по умолчанию содержит три шаблона:

  • page.php - шаблон страницы по умолчанию: отображает содержимое страницы
  • archives.php - игнорирует содержимое и вместо него показывает список архивов по месяцам и рубрикам.
  • links.php - также игнорирует содержимое и вместо него показывает ссылки, используя wp_list_bookmarks().

Какой шаблон используется для показа отдельных страниц?

WordPress просматривает несколько файлов в активной теме. Первый найденный будет использован для показа любой страницы. WordPress просматривает файлы в следующем порядке:

  1. Выбраннный для данной страницы шаблон.
  2. page.php
  3. index.php

Создание собственных шаблонов страниц

Файлы, определяющие шаблоны, находятся в папке с темой. Для создания собственного шаблона нужно создать файл. Итак, для примера, назовём наш новый шаблон snarfer.php. В первых строчках файла напишем следующее:

<?php
/*
Template Name: Snarfer
*/
?>

Приведённый код определяет что файл snarfer.php - шаблон "Snarfer" (естественно, вы можете переименовать "Snarfer" во что угодно, только не запутайтесь). Это имя появится в редакторе тем со ссылкой на соответствующий файл.

Файл можно назвать как угодно с расширением .php (об именах, которые нельзя использовать см. в reserved Theme filenames; это специальные имена, зарезервированные системой для внутреннего использования).

Всё что вы напишете ниже - зависит от вашего желания и фантазии. Остаток кода будет управлять выводом страниц, которые используют наш шаблон "Snarfer". См. Теги шаблонов, где содержатся описания для различных функций вывода. Для удобства при создании своего шаблона можно воспользоваться уже существующим, скопировав его, например, из page.php или index.php в snarfer.php и затем оформив заголовок, как мы это сделали выше. В таком случается останется только подправить код HTML и PHP, вместо того, чтобы набирать всё это "с нуля".

Примеры приведены ниже. С того момента, как вы создали шаблон страницы и поместили его в папку с темой он становится доступным для выбора во время создания или правки страницы.

Примечание: когда страница создаётся или правится, настройка шаблона не появляется пока не будет создан как минимум один шаблон, как описано выше.

Примеры страниц и шаблонов

Ниже приводится список примеров. Вы можете добавить свои.

Архивы с содержимым

Шаблон, который сначала показывает вверху содержимое страницы, а ниже - список архивов по месяцам и рубрикам. Он работает с темой по умолчанию (Kubrick), но с незначительными доработками подойдёт для других тем.

Сохраните код ниже в arc-cont.php:

<?php
/*
Template Name: Archives with Content
*/
?>

<?php get_header(); ?>

<div id="content" class="widecolumn">

 <?php if (have_posts()) : while (have_posts()) : the_post();?>
 <div class="post">
  <h2 id="post-<?php the_ID(); ?>"><?php the_title();?></h2>
  <div class="entrytext">
   <?php the_content('<p class="serif">Read the rest of this page &raquo;</p>'); ?>
  </div>
 </div>
 <?php endwhile; endif; ?>
 <?php edit_post_link('Edit this entry.', '<p>', '</p>'); ?>

</div>
<div id="main">

<?php include (TEMPLATEPATH . '/searchform.php'); ?>

<h2>Archives by Month:</h2>
  <ul>
    <?php wp_get_archives('type=monthly'); ?>
  </ul>

<h2>Archives by Subject:</h2>
  <ul>
     <?php wp_list_cats(); ?>
  </ul>

</div>
<?php get_footer(); ?>

Страница с записями

Шаблон показывает записи определённой рубрики в зависимости от того, какая страница показывается. Он работает с темой по умолчанию (Kubrick), но с незначительными доработками подойдёт для других тем.

Сохраните код ниже в pageofposts.php:

<?php
/*
Template Name: PageOfPosts
*/

get_header(); ?>

	<div id="content" class="narrowcolumn">

<?php
// page id 21 will get category ID 12 posts, page 16 will get category 32 posts, page 28 will get category 17 posts
if (is_page('21') ) {
$cat = array(12);
} elseif ( is_page('16') ) {
$cat = array(32);
} elseif ( is_page('28') ) {
$cat = array(17);
} else {
$cat = '';
}

$showposts = -1; // -1 shows all posts
$do_not_show_stickies = 1; // 0 to show stickies
$args=array(
   'category__in' => $cat,
   'showposts' => $showposts,
   'caller_get_posts' => $do_not_show_stickies
   );
$my_query = new WP_Query($args); 

?>

	<?php if( $my_query->have_posts() ) : ?>

		<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
			<?php
			//necessary to show the tags 
			global $wp_query;
			$wp_query->in_the_loop = true;
			?>
			<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
				<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
				<small><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></small>

				<div class="entry">
					<?php the_content('Read the rest of this entry »'); ?>
				</div>

				<p class="postmetadata"><?php the_tags('Tags: ', ', ', '<br />'); ?> Posted in <?php the_category(', ') ?> | <?php edit_post_link('Edit', '', ' | '); ?>  <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?></p>
			</div>

		<?php endwhile; ?>

	<?php else : ?>

		<h2 class="center">Not Found</h2>
		<p class="center">Sorry, but you are looking for something that isn't here.</p>
		<?php get_search_form(); ?>

	<?php endif; ?>

	</div>

<?php get_sidebar(); ?>

<?php get_footer(); ?>

WordPress как CMS

Вы можете использовать WordPress для управления содержимым. Если вы так решили - вам понадобится создать некоторое (возможно, большое) количество страниц.

Использование страницы в качестве главной

В WordPress версии 2.1 появилась возможность использовать любую страницу в качестве главной.

Для этого необходимо перейти в Параметры > Чтение в административной панели. В секции "На главной странице отображать" можно выбрать что показывать в качестве главной страницы. По умолчанию там стоит значение "Ваши последние записи".

Дополнительные методы установки главной страницы для версий ниже 2.1

Если не использовать встроенную возможности установки главной страницы остаётся две возможности. Первая - использовать модуль Static Front Page Plugin. Он модифицирует запрос к главной странице и sticks the Page with a Page slug of "home" to the front page.


Когда страница показывается как главная, если шаблон с именем home.php есть для текущей темы, модуль перекрывает настройки шаблона и вместо него использует home.php. Шаблон применяется в том случае, если на страницу переходят по адресу (например, http://example.com/home/)

В качестве альтернативы модулю WordPress попытается распознать "home.php" в папке с шаблонами и использовать его вместо "index.php". Однако, если ваша главная страница - не блог, примите во внимание, что шаблон home.php будет всегда показывать её как блог, хотите вы этого или нет. Вы можете использовать метку шаблона query_posts() перед вызовом главного цикла. Например:

<?php 
     query_posts('pagename=home'); 
?>

вызовет запись с именем страницы "home".

Включение страницы

Также вы можете включить страницы в разные места сайта. Для этого есть модуль Improved Include Page с помощью которого процесс включения существенно облегчается.

Динамическая природа страниц WordPress

Веб-страница может быть статичной или динамической. Статичные страницы, как и обычные файлы HTML, созданные при помощи редактора, создаются один раз и не меняются между визитами посетителей. Динамические же, созданные с помощью WordPress, напротив, нуждаются в постоянном обновлении при каждой загрузке. В данном случае страница создаётся заново. Это предполагает интенсивное использование кода PHP, который определяет посещение и создаёт страницу "на лету".

Почти всё в WordPress динамическое, включая Страницы. Всё что вы и другие люди пишут в WordPress (записи, страницы, комментарии, списки блогов, рубрики и многое другое) хранится в базе данных MySQL. Когда кто-то запрашивает информацию с сайта, используется WordPress, который в свою очередь использует базу данных, содержащую шаблоны и темы.

В качестве примера использования статической страницы может служить любой документ HTML без включения кода PHP, который дополняет динамически созданные страницы. Это может быть страница "Обо мне". Проблема чисто статических страниц в том, что их сложно поддерживать в актуальном состоянии. Настройки, вносимые в WordPress, темы и шаблоны, не будут отражаться в страницах, написанных вручную. Функция Страницы была разработана для того, чтобы избежать этой проблемы. Теперь не нужно обновлять каждую статическую страницу, если поменялся дизайн сайта - это будет сделано автоматически для всех страниц.

Несмотря на динамическую природу Страниц многие люди обращаются к ним как если бы они были статичными.

In the context of web publishing, static and dynamic mean what has been described above. More generally, however, static can mean "characterized by a lack of change". It is easy to see how this definition influenced the word's use in describing types of web pages. It is also easy to see why people think of Pages as being static; Posts come and go, but Pages are here to stay since Pages are typically used to display information about your site which is constant (e.g., information about yourself, description of your site).

In other words, a Page contains static information but is generated dynamically. Thus, either "static" or "dynamic" may be validly used to describe the nature of the WordPress Page feature. However, in order to avoid confusion, and because Pages themselves are dynamic while it is only their contents which are in some way static, this document does not refer to Pages as being static.

Related content: