Прилепленные записи (sticky posts) в WordPress. Что это и как с ними работать?

По дефолту, при публикации записей в WordPress они смещаются и первыми отображаются более свежие посты. Иногда появляется задача закрепить один или несколько постов на главной странице сайта, чтобы они фиксировано отображались, и можно было их выделить с помощью CSS. В WordPress для этих целей служат прилепленные посты, или как их еще называют sticky posts.

Для того, чтобы закрепить запись, вам нужно перейти на страницу ее редактирования в административной панели сайта. В редакторе Gutenberg, достаточно переключиться на вкладку документ в правой панели и поставить галочку в чекбоксе.

В Classic Editor вам нужно в правой панели найти параметр «Видимость» и нажать на ссылку «Изменить».

Далее выбираем пункт «Открыто» и включаем чекбокс «Прилепить на главную страницу».

Далее жмем «Обновить» или же «Опубликовать».

Теперь зафиксированные посты будут выводиться в самом начале ленты на главной WordPress сайта и в дополнительных циклах, которые вы будете выводить с помощью класса WP_Query.

Важный момент. На страницах архивов (рубрик) и меток, закрепленные посты не работают по умолчанию. При добавлении нескольких прилепленных записей между собой они будут сортироваться по дате публикации.

Как вывести список прилепленных постов?

Сделать это можно обратившись к id записей с такой пометкой, а в базе данных они хранятся в виде отдельного массива.

<?php
$arg = array(
	'posts_per_page' => 10, // нужно для отображения всех постов, без разделения по страницам
	'post__in'  => get_option( 'sticky_posts' ), // например Array ( [0] => 54 [1] => 1 )
);
 
$sticky = new WP_Query( $arg );
 
while ($sticky->have_posts()) : $sticky->the_post();
	// HTML-шаблон вывода поста
endwhile; wp_reset_postdata();
?>

Тут, для вывода постов использован класс WP_Query.

Как отключить прилепленные записи на главной странице WordPress?

При отключении приоритета закрепленных постов, они будут выводиться в общей ленте записей соответственно даты публикации. Приведенные варианты кода, нужно добавлять в файл functions.php вашей темы.

Пример кода для отключения sticky posts только на главной.

<?php
add_action( 'pre_get_posts', 'turn_off_sticky_on_homepage' );
 
function turn_off_sticky_on_homepage( $query ) {
	if ( !is_admin() && $query->is_main_query() ) {
		$query->set( 'ignore_sticky_posts', true );
	}
}
?>

В дополнительных циклах, например в WP_Query.

<?php
add_action( 'pre_get_posts', 'turn_off_sticky_on_queries' );
 
function turn_off_sticky_on_queries( $query ) {
	if ( !is_admin() && !$query->is_main_query() ) {
		$query->set( 'ignore_sticky_posts', true );
	}
}
?>

Полное отключение данного функционала в WordPress.

<?php
add_action( 'pre_get_posts', 'turn_off_sticky' );
 
function turn_off_sticky( $query ) {
	$query->set( 'ignore_sticky_posts', true );
}
?>

Как задать свои стили для прилепленных постов?

Для оформления закрепленных записей используется класс – sticky. Он добавляется за счет использованием в CMS WordPress стандартной функции post_class().

Сама структура контейнера поста имеет следующий формат.

<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

Для того чтобы задать sticky posts отдельные стили переходим в файл style.css вашей темы (или другой подключаемый) и добавляем свой код.

Пример, когда для таких постов добавлена красная рамка.

.sticky {
	border: 1px solid red;
}

Как добавить закрепленный пост в рубрике сайта?

Чтобы добавить такую выделенную запись можно воспользоваться плагинами, например Sticky Posts — Switch.

Заходим в меню «Плагины» — «Добавить новый». Ищем по название, устанавливаем и активируем данный плагин.

Плагин добавляет возможность задавать прилепленные посты и для кастомных типов записей. Будет добавлять класс для отмеченных постов, как на главной странице сайта, так и в рубриках и архивах.

Чтобы подключить возможность помечать посты для кастомных типов записей нужно перейти в раздел «Настройки» — «Sticky Posts — Switch» и там поставить галочки возле нужных позиций.

На этом сегодня все. Надеюсь, материал был для вас полезен.

Поделиться в социальных сетях:
Нет комментариев к данной статье

Оставить новый комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *