Ограничьте количество прилепленных постов в wordpress

У меня есть веб-сайт в разработке, и клиент хотел, чтобы у меня была страница с новостями и часто задаваемыми вопросами. Не проблема! Он хотел иметь возможность добавлять свои собственные сообщения (как в новости, так и в FAQ. Опять же, это не проблема! Последнее, что он просил, это возможность управлять количеством отображаемых сообщений и их типом. Теперь тут я запутался. Я уже построил систему, в которой клиент может выбрать категорию для показа (я использую для этого AwesomeBuilder). Теперь у нас есть три разных типа постов. Обычный, Обычный + Прилепленный и Sticky. Если клиент выберет параметр «Показывать только обычные сообщения», я могу отключить прикрепленные сообщения с помощью post__not_in. Однако, если клиент выбирает «Обычные + липкие» или «Прилепленные», функция суммы больше не работает.

Допустим, клиент выбирает максимальное количество сообщений 10. В обычной категории это максимальное значение составляет 10, и все. Однако на прилепленных постах этого не происходит, он просто показывает все прилепленные посты, поскольку прилепленным сообщениям сказано всегда оставаться наверху. Обычный + Прилепленный покажет все прикрепленные сообщения, за которыми следуют 10 обычных сообщений. Я надеюсь, что моя ситуация и проблема ясны.

Код ниже.

$sticky = get_option( 'sticky_posts' );
$number = $atts['number'];

if ($atts['sticky'] == 'nieuws') {
    $args = array('post__not_in'  => $sticky, 'posts_per_page' => $number );

} elseif ($atts['sticky'] == 'nieuws-sticky') {
    $sticky_count = count($sticky);
    if ($sticky_count <= $number){
        $number_sticky = $number - $sticky_count;
        $args = array('post_type' => post, 'posts_per_page' => $number_sticky);
    }
    else {
//      $sticky = array_slice($sticky,0, 1);
//      echo 'hello'. $sticky;
        $args = array('post__in'  => $sticky );
    }
} else {
//  $sticky = array_slice($sticky,1, 2);
    $args = array('post__in'  => $sticky, 'posts_per_page' => $number );
}

пс. Я знаю, что ЭТО примерно тот же вопрос, но ответа на него пока нет.


person Marco Geertsma    schedule 29.09.2014    source источник


Ответы (2)


Убедитесь, что переменная $number получает значение 10, а также убедитесь, что вы используете $args в функциях query_posts, например query_posts($args);

person Pedro Henrique Rodrigues    schedule 29.09.2014
comment
Значение $number задается пользовательским ползунком. Это получение правильной переменной, это было проверено тем, что обычные сообщения работают нормально. - person Marco Geertsma; 29.09.2014
comment
$args = array('showposts' => $number); - person Pedro Henrique Rodrigues; 29.09.2014
comment
Спасибо за ваш код, Педро, он не отменяет прилепленные сообщения, однако все они все равно отображаются вверху моей страницы. - person Marco Geertsma; 30.09.2014

https://codex.wordpress.org/Sticky_Posts

Вы можете обратиться к этому «Отображать только первое прикрепленное сообщение, если ни одно из них не возвращает последнее опубликованное сообщение:» по ссылке.

person Suhimi Nain    schedule 13.08.2015