Показывать только липкие записи на главной странице в wordpress

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

$sticky = get_option('sticky_posts');
$where .= ' AND wp_posts.ID IN ('.implode(',', $sticky).') ';

Если такое условие нужно только для главной страницы, то надо добавить проверку is_home(). В wordpress для изменения условия в запросе есть специальный фильтр posts_where, который возвращает текущее значение условия WHERE перед запросом к базе данных. Этот фильтр можно использовать для разработки плагинов, например показывать только липкие записи на главной странице:

<?php
//Plugin Name: Forever Sticky
//Description: Показывать на главной странице только липкие записи
//Author:      Polyetilen
//Version:     1.0

function forever_sticky_condition ( $where ) { 
	if(is_home()){
		$sticky = get_option('sticky_posts');
		if(count($sticky)>0){
			return $where.' AND wp_posts.ID IN ('.implode(',', $sticky).') ';
		}else{
			return $where;
		}
	}else{
		return $where;
	}
}

add_filter('posts_where', 'forever_sticky_condition'); 
?>

Скачать плагин Forever sticky.

Запись опубликована в рубрике Wordpress, Программирование с метками , , , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

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

Этот сайт защищен политикой конфиденциальности и условиями использования reCAPTCHA и Google.