Функция get_post_class()
в WordPress возвращает массив CSS-классов, которые присваиваются посту. Это полезно для стилизации постов на основе их характеристик, таких как тип, статус и другие атрибуты.
Описание функции
Функция get_post_class()
возвращает массив CSS-классов для заданного поста. Эти классы могут использоваться для стилизации постов в шаблонах.
get_post_class( string|array $class = '', int|WP_Post $post_id = null )
Функция генерирует набор классов для поста. Некоторые из них:
post-[ID]
— уникальный класс для каждой записи, где[ID]
— это идентификатор записи.has-post-thumbnail
— если у записи есть миниатюра.sticky
— если пост закреплен (sticky).hentry
— общий класс, который всегда добавляется к посту.{$taxonomy}-{$slug}
— для каждой таксономии, к которой относится запись, добавляется класс видаtaxonomy-slug
. Например:category-news
,tag-updates
.
Все классы можно модифицировать с помощью фильтра post_class
. Это позволяет кастомизировать классы в зависимости от дополнительных условий.
Параметры
- $class (string|array): (Необязательный) Один или несколько дополнительных классов, которые нужно добавить к списку. По умолчанию — пусто.
- $post_id (int|WP_Post): (Необязательный) ID поста или объект WP_Post. По умолчанию — текущий пост в цикле.
Возвращаемое значение
- (array): Массив классов для поста.
Примеры использования
Пример 1. Получение классов текущего поста в цикле
Если функция используется внутри основного цикла WordPress, параметр $post_id
можно не передавать.
if ( have_posts() ) :
while ( have_posts() ) : the_post();
$classes = get_post_class();
echo '<div class="' . implode( ' ', $classes ) . '">';
the_title( '<h2>', '</h2>' );
the_content();
echo '</div>';
endwhile;
endif;
Пример 2. Получение классов для определенного поста
Если нужно получить классы для конкретного поста, можно передать его ID в функцию.
$post_id = 42;
$classes = get_post_class( '', $post_id );
echo '<div class="' . implode( ' ', $classes ) . '">';
echo '<h2>' . get_the_title( $post_id ) . '</h2>';
echo '<div>' . get_the_content( null, false, $post_id ) . '</div>';
echo '</div>';
Пример 3. Добавление пользовательских классов
Вы можете добавить свои собственные классы к списку классов поста, передав их в параметре $class
.
if ( have_posts() ) :
while ( have_posts() ) : the_post();
$classes = get_post_class( 'custom-class another-class' );
echo '<div class="' . implode( ' ', $classes ) . '">';
the_title( '<h2>', '</h2>' );
the_content();
echo '</div>';
endwhile;
endif;
Пример 4. Использование класса в массиве
Вы также можете передавать классы в виде массива.
$custom_classes = array( 'custom-class', 'another-class' );
$classes = get_post_class( $custom_classes, $post_id );
echo '<div class="' . implode( ' ', $classes ) . '">';
echo '<h2>' . get_the_title( $post_id ) . '</h2>';
echo '<div>' . get_the_content( null, false, $post_id ) . '</div>';
echo '</div>';
Пример 5: Получение стандартного набора классов
По умолчанию, если вызвать функцию в цикле WordPress, она вернет список стандартных классов для записи:
$classes = get_post_class();
print_r( $classes );
/* Вывод:
Array
(
[0] => post-219
[1] => post
[2] => type-post
[3] => status-publish
[4] => format-standard
[5] => has-post-thumbnail
[6] => hentry
[7] => category-blog
[8] => tag-updates
)
*/
Пример 6: Удаление класса с помощью фильтра
Если вам нужно исключить определенные классы, например, hentry
, вы можете использовать фильтр post_class
:
add_filter( 'post_class', 'remove_hentry' );
function remove_hentry( $classes ) {
return array_diff( $classes, array( 'hentry' ) );
}
Этот код удалит класс hentry
из списка классов для всех записей.
Пример 7: Получение классов для конкретного поста
Можно указать конкретный пост (ID или объект) для получения классов:
$post_id = 123; // ID нужного поста
$classes = get_post_class( '', $post_id );
print_r( $classes );
Заключение
Функция get_post_class()
— это удобный инструмент для получения CSS-классов, которые могут быть использованы для стилизации постов в WordPress. Она позволяет разработчикам легко добавлять стандартные и пользовательские классы, обеспечивая гибкость и контроль над внешним видом постов.