Функция post_class()
в WordPress добавляет HTML-атрибут class=""
с классами, которые WordPress присваивает постам. Это позволяет каждому посту иметь уникальный набор CSS-классов. Если вам нужно не вывести классы, а получить их как массив, используйте функцию get_post_class()
.
Описание функции
Функция post_class()
выводит строку CSS-классов для текущего поста. Она обычно используется в контейнере поста в шаблоне темы.
post_class( $class = '', $post_id = null )
Параметры:
$class
(строка или массив, необязательный): Один или несколько классов, которые нужно добавить к посту.$post_id
(целое число или объект WP_Post, необязательный): ID или объект поста. По умолчанию используется ID текущего поста в цикле.
Возвращаемое значение:
- Функция выводит строку CSS-классов.
Примеры использования
Простой пример использования функции в цикле
Для того чтобы вывести ID поста, воспользуемся функцией the_ID()
.
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
?>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<h2><?php the_title(); ?></h2>
<div class="entry-content">
<?php the_content(); ?>
</div>
</div>
<?php
}
}
Для записи с ID=5855 результат будет следующий:
<div id="post-5855" class="post-5855 post type-post status-publish format-standard hentry category-vse-podryad">
Что можно сказать о нашем посте, глядя на этот HTML-код?
post-5855
— ID поста.post
— тип поста.type-post
— это запись (тип постаpost
).status-publish
— запись опубликована.format-standard
— тема поддерживает форматы постов, при этом у рассматриваемого поста формат не присвоен.category-vse-podryad
— запись находится в категории с ярлыком «vse-podryad».
Добавление собственных классов CSS
Если вы хотите добавить свои CSS-классы к блоку <div>
, это можно сделать следующим образом:
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
?>
<div <?php post_class( array( 'myclass1', 'myclass2' ) ); ?>>
<h2><?php the_title(); ?></h2>
<div class="entry-content">
<?php the_content(); ?>
</div>
</div>
<?php
}
}
В этом примере к посту будут добавлены пользовательские классы myclass1
и myclass2
.
Список присваиваемых классов
Для удобства, ниже представлена информация о добавляемых классах в зависимости от условий:
- Общие для всех постов:
post-{ID поста}
,type-{тип поста}
,status-{статус поста}
,hentry
, и классы, указанные в параметре функции$class
. - Не админ-панель:
{тип поста}
- Если пост поддерживает форматы:
format-{название формата}
илиformat-standard
, если формат не установлен. - Если пост запаролен:
post-password-required
иpost-password-protected
, если задан пароль записи. - Если пост не запаролен и имеет миниатюру:
has-post-thumbnail
- Если это закрепленный пост:
sticky
на главной странице, иначеstatus-sticky
в админке. - Если пост в категории:
category-{ярлык категории}
илиcategory-{ID категории}
, если ярлык пустой. - Если посту присвоены метки:
tag-{ярлык метки}
илиtag-{ID метки}
- Если пост принадлежит к таксономии:
{таксономия}-{ярлык термина}
или{таксономия}-{ID термина}
Примеры использования post_class()
Простой пример использования функции в цикле
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
?>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<h2><?php the_title(); ?></h2>
<div class="entry-content">
<?php the_content(); ?>
</div>
</div>
<?php
}
}
Добавление собственных классов CSS
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
?>
<div <?php post_class( array( 'myclass1', 'myclass2' ) ); ?>>
<h2><?php the_title(); ?></h2>
<div class="entry-content">
<?php the_content(); ?>
</div>
</div>
<?php
}
}
Использование фильтра post_class
function add_custom_post_class( $classes ) {
if ( is_single() ) {
$classes[] = 'single-post';
}
return $classes;
}
add_filter( 'post_class', 'add_custom_post_class' );
Зачем использовать post_class()
?
- Автоматизация:
post_class()
автоматически добавляет классы, соответствующие формату поста, категориям и другим параметрам. - Гибкость: Возможность добавления пользовательских классов позволяет адаптировать стилизацию под конкретные нужды.
- Удобство: Функция легко интегрируется в шаблоны и упрощает процесс стилизации постов.
Заключение по post_class
Функция post_class()
в WordPress является мощным инструментом для добавления CSS-классов к постам. Её использование упрощает процесс стилизации и улучшает внешний вид вашего сайта.