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

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

Допустим, клиент выбирает максимум 10 сообщений. В обычной категории это достигает максимума в 10 и все. На липких постах, однако, этого не происходит, он просто показывает все липкие посты, поскольку наклейкам всегда нужно оставаться на вершине. Обычный + Sticky покажет все прикрепленные сообщения, за которыми следуют 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 );
}

пс. я знаю ЭТОТ Это примерно тот же вопрос, но на него еще не ответили.

0

Решение

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

0

Другие решения

https://codex.wordpress.org/Sticky_Posts

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

0

По вопросам рекламы [email protected]