Функция 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-классов к постам. Её использование упрощает процесс стилизации и улучшает внешний вид вашего сайта.