Как вывести последние прилепленные записи в WordPress

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

В WordPress есть очень интересная фича, которая называется «Прилепленные записи». Когда вы делаете пост прилепленным, он отображается выше, чем ваши все новые записи, но только в том случае, если ваша тема поддерживает такую функцию. В этой статье мы покажем вам, как можно вывести последние прилепленные записи в любом месте вашей темы WordPress .

Предположим, что вы уже создали пользовательский шаблон страницы и/или уже есть в наличии The Loop, тогда вставляем следующий код перед циклом.

<?php
/* Получаем все прилепленные записи */
$sticky = get_option( 'sticky_posts' );

/* Сортируем прилепленные записи таким образом, чтобы новая была всегда сверху*/
rsort( $sticky );

/* Получаем 5 последних прилепленных записей (изменяем 5 на нужное вам количество) */
$sticky = array_slice( $sticky, 0, 5 );

/* Запрашиваем прилепленные записи */
query_posts( array( 'post__in' => $sticky, 'caller_get_posts' => 1 ) );
?>

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

Отключение повышенного приоритета для прилепленных записей

В этом случае все записи будут выводиться как обычно, то есть с сортировкой по дате.

Делаем для главной страницы:

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 );
	}
}

Делаем для только в дополнительных циклах внутри страниц:

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 );
	}
}

Делаем везде абсолютно:

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

Благодарности за этот код уходят к Justin Tadlock и частично к Nathan Rice за разработку решения с массивом.

VN:F [1.9.22_1171]

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