post_class() — выводит список CSS-классов для поста

Функция 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()
  • Если выполняются два следующих условия is_home() и !is_paged()sticky,
  • иначе если выполняется is_admin()status-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

Миша Рудрастых

Путешествует по миру и рассказывает всем о WordPress лично, у себя в блогах и на курсах в Санкт-Петербурге. Умеет просто объяснять сложные вещи, делает это красиво. Организовывает неплохие WordCamp's, но совсем не умеет слушать чужие доклады.

Добавить комментарий

%d такие блоггеры, как: