По дефолту, при публикации записей в 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» и там поставить галочки возле нужных позиций.

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