Функция post_class()
выводит HTML-атрибут class=""
с содержащимися в нем классами, которые WordPress присваивает для постов. В итоге для каждого поста получаем уникальный набор классов CSS.
Я уже рассматривал функцию body_class(), которую нужно было добавлять в тег <body>
. Функцию же post_class()
мы вставляем в тег <div>
, в который заключен пост (или его анонс), примерно вот так <div <?php post_class() ?>>
.
post_class( $class = '', $post_id = null ) |
- $class
- (строка|массив) класс или классы CSS, которые вы хотите добавить к общему списку выводимых классов.
- $post_id
- (целое число) ID поста (по умолчанию — текущий из цикла).
Список присваиваемых классов
Эту таблицу я составил, проанализировав исходный код функции.
Условие | Добавляемые классы |
---|---|
Одинаковые для всех постов |
post-{ID поста} , type-{тип поста} , status-{статус поста} , hentry , а также классы, указанные в параметре функции $class. |
!is_admin() | {тип поста} |
Если данным типом поста поддерживаются форматы |
format-{название формата} либо format-standart , если формат данной записи не установлен. |
Если пост запаролен | post-password-required |
Если пост не запаролен, не является вложением и имеет установленную миниатюру | has-post-thumbnail |
is_sticky() |
|
Если пост находится в одной или нескольких категориях |
category-{ярлык категории} (либо category-{ID категории} , если с ярлыком возникли проблемы) |
Если посту присвоены метки |
tag-{ярлык метки} (либо tag-{ID метки} )
|
Примеры использования post_class()
Простой пример использования функции в цикле
Для того, чтобы вывести ID поста, воспользуемся функцией the_ID().
<div id="post-<?php the_ID() /* выводим ID поста */ ?>" <?php post_class() /* выводим классы */ ?>> |
Для записи с ID=5855 результат будет следующий:
<div id="post-5855" class="post-5855 post type-post status-publish format-standard hentry category-vse-podryad"> |
Окей, что можно сказать о нашем посту, глядя на этот HTML код?
-
post type-post
— это запись (тип поста post). -
status-publish
— запись опубликована. -
format-standard
— тема поддерживает форматы постов, при этом у рассматриваемого поста формат не присвоен. -
category-vse-podryad
— запись находится в категории с ярлыком «vse-podryad».
Добавление собственных классов CSS
Предположим, что у нашего блока <div>
уже есть атрибут class, при этом вы решили, что будете использовать функцию post_class()
. Как всё это можно сочетать?
Было:
<div class="myclass1 myclass2"></div> |
Стало:
<div <?php post_class( array( 'myclass1', 'myclass2' ) ) ?>></div> |
Источник: misha.blog