В преобладающем большинстве случаев сайт, созданный на WordPress, функционирует на основе страниц и рубрик. Рубрики предлагают богатые средства по индивидуальному управлению списками записей. Также рубрики могут принимать участие в запросах, построенных на базе условных тегов is_category(), что позволяет выполнять их различное представление.
Метки, с другой стороны, обладают большей гибкостью и используются в основном для описания отдельных записей. В данном разделе мы рассмотрим их актуальное применение.
Достижение специального взаимодействия с помощью меток достигается одним из трех различных путей. Первый путь является наиболее очевидным: возможность управления страницами архивов меток. Вероятно, вы помните, что шаблон tag.php позволяет управлять отображением меток, также как и шаблон tag-X.php, где X — определяющая строка какой-либо метки. Существенное отличие между category-X.php и tag-X.php заключается в следующем: в первом шаблоне вместо X может быть употреблен только идентификатор рубрики. Использование указанных шаблонов дает возможность собственного представления списка записей, построенного на базе какой-либо метки. В теории это означает, что существует возможность создания секций, работающих аналогично рубрикам, но построенных на метках.
Второй путь, связанный с управлением контентом сайта, основан на использовании условного тега is_tag(). Он работает практически также, как и is_category(), и требует в качестве одного из своих параметров определяющую строку метки, к примеру:
<?php is_tag('pirates'); ?>
Хорошо продуманные проекты редко включают в себя значительное число рубрик. В основном они строятся как раз на использовании меток. Однако, одной меткой вряд ли удастся обойтись. Для того чтобы передать массив меток в условный тег is_tag(), используется следующая конструкция:
<?php is_tag(array('pirates', 'ninjas', 'mushrooms')); ?>
Она возвратит истину всякий раз, когда сообщение будет обладать какой-либо из перечисленных меток: pirates, ninjas или mushrooms.
Наконец, третий, и заключительный, вариант грамотного применения меток заключается в использовании post_class(), который, насколько вы помните, возвращает каждую метку в качестве класса для блока записи div. Это дает возможность более тщательно проработать стилизацию записей.
К примеру, для записи с ID=129, post_class() вернет класс post-129:
<div id="post-129"> <!-- The actual post stuff would come here --> </div>
Если вместо ID для рубрик использовать определяющую строку, к примеру, news, то класс получит вид category-news. То же самое относится и к меткам: они получают префикс «tag-«.
Удобство указанного использования заключается в более тщательном контроле над представлением различных материалов. Если вы хотить придать некоторым записям отдельный эмфазис, выделить их среди остальных — более приемлемого решения, чем размечивание, вам не найти. Допустим, к примеру, что вы хотите вывести сообщение «Спасибо нашим спонсорам» среди общего контента сайта, но не желаете, чтобы читатели спутали его с обычной записью. В таком случае достаточно будет добавить к сообщению метку sponsor, и затем при помощи post_class() присвоить записи класс post-sponsor, который в дальнейшем может быть отдельным образом стилизован в таблице стилей CSS. Можно задать выделяющийся шрифт, яркую цветовую гамму, фоновое изображение, границы и т.д.
Мы убедились в том, что сайт может быть построен как на основе рубрик, так и на основе меток. Мой совет — будьте очень внимательны при добавлении рубрик; используйте их лишь для основных разделов сайта. В дальнейшем вы всегда сможете выполнить любое представление записей, которое вам понадобится, с помощью меток и стилевых правил CSS.
Альтернатива: произвольные поля
Допустим, в силу ряда причин, вы не хотите использовать основанный на метках дизайн. Однако, вы остро нуждаетесь в добавлении спонсорских объявлений среди обычного контента, и хотите, чтобы соответствующая им метка не была отображена в облаке тегов. Исключить метку из облака тегов можно следующим образом:
<?php wp_tag_cloud('exclude=sponsor'); ?>
Однако, допустим, что в силу ряда причин вы не желаете идти данным путем, и хотите получить аналогичный результат с помощью альтернативных решений. В таком случае отличные возможности предлагают произвольные поля. В примере ниже мы создадим поле под названием Poststyle, которое будет хранить требуемый стиль для рекламных записей.
Проверка значения поля будет осуществляться отдельно для каждой записи. В качестве значения будет выступать определенный класс, который впоследствии можно будет легко представить в таблице стилей.
<?php $specialstyle = get_post_meta($post->ID, 'Poststyle', true); echo $specialstyle; ?>
Следующий код используется для вывода ID и классов для блока div:
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
Связать добавление классов с ID можно и по-другому:
<div id="post-<?php the_ID(); ?> <?php $specialstyle = get_post_meta($post->ID, 'Poststyle', true); echo $specialstyle; ?>" <?php post_class(); ?>>
Однако, это решение не является самым лучшим. Попробуем связать добавление класса с post_class(). Насколько вы помните, post_class() может принимать параметры, которые будут преобразованы в классы. Если вы хотите добавить класс turtles к определенным записям, достаточно будет использовать следующее выражение:
<?php post_class('turtles'); ?>
В нашем случае понадобится воспользоваться следующим выражением:
<div id="post-<?php the_ID(); ?>" <?php post_class( $specialstyle = get_post_meta($post->ID, 'Poststyle', true) ); ?>>
Выражение добавит класс, хранящийся в произвольном поле Poststyle, к блоку div.
Управление представлением записей, независимо от того, какой способ был использован (с помощью меток или с помощью произвольных полей), позволяет добиться большего разграничения различных типов контента, акцентирования внимания посетителей на самых важных записях.