get_post_class() – возвращает массив CSS-классов поста

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

При выводе постов внутри цикла WordPress вы можете использовать фукнции post_class() или get_post_class() для присвоения посту уникальных CSS-классов в атрибуте class="", что позволит стилизовать разные типы, форматы постов или конкретные записи по-другому.

Каждый класс при добавлении проходит через очистку функцией esc_attr().

Полный список добавляемых классов.

get_post_class( $class = '', $post_id = null );

Параметры

$class
(строка|массив) класс или массив классов CSS, которые вы хотите добавить к общему списку добавляемых классов.
$post_id
(целое число|WP_Post) ID или объект поста (по умолчанию — текущий из цикла).

Примеры

Хотя, возможно в этой ситуации имеет смысл рассмотреть использование функции post_class().

// получаем массив классов текущего поста в цикле
$classes = get_post_class();
 
// при выводе HTML-теги поста, добавляем классы 
echo '<article class="' . esc_attr( implode( ' ', $classes ) ) . '">';

Попробуем теперь при выводе добавить парочку собственных классов.

$post_class = get_post_class( array( 'my-class-1', 'my-class-2' ) );
var_dump( $post_class );
 
/* Примерный вывод для обычной записи:
array
    0 => string 'post-[ID]' (length=7)
    1 => string '[post_type]' (length=4)
    2 => string 'type-[post_type]' (length=9)
    3 => string 'status-[post_status]' (length=14)
    4 => string 'format-[post_format]' (length=15)
    5 => string 'hentry' (length=6)
    6 => string 'category-[...]'
    7 => string 'tag-[...]'
    8 => string 'my-class-1' (length=10)
    9 => string 'my-class-2' (length=10)
*/

Фильтр post_class

При помощи этого фильтра вы можете изменить список классов, возвращаемых функцией для всего сайта. Например давайте удалим класс hentry.

/**
 * @snippet       Удаляем класс "hentry" из функции get_post_class()
 * @author        Миша Рудрастых
 * @url           https://misha.agency/wordpress/get_post_class.html
 * @param string[] $classes Массив CSS-классов, возвращаемых функцией
 * @param string[] $class   Массив CSS-классов, добавленных черех параметр
 * @param int      $post_id ID поста
 */
add_filter( 'post_class', 'true_remove_hentry', 25, 3 ); 
 
function true_remove_hentry( $classes, $class, $post_id ) {
	// ищем класс hentry и удаляем его из массива
	if ( ( $key = array_search( 'hentry', $classes ) ) !== false ) {
    		unset( $classes[ $key ] );
	}
	return $classes;
}

Не знаете, куда вставлять код?

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии