Приветствую вас дорогие читатели! В этом небольшом уроке я приведу пример кода, с помощью которого можно запретить выводить закрепленные записи.
Все вы знаете, что в WordPress можно закреплять статьи на главной странице (такие статьи, в независимости от даты их публикации, всегда будут вверху).
Если для вывода записей вы используете только одну функцию на странице (например, query_posts), то всё будет нормально.
Но если вы захотите вывести на одной странице сначала, например, блок новостей с одними определенными параметрами, а потом блок новостей с другими параметрами, то вам понадобится уже 2 цикла (две функции query_posts), а это значит что закрепленные записи выведутся из там и там!
Пример такого кода, при условии, что у нас закреплено 3 записи:
$args_1 = array( 'cat' => '10', 'showposts' => 6 ); query_posts( $args_1 );
Здесь мы выводим 6 записей из рубрики с id 10:
$args_2 = array( 'cat' => '20', 'showposts' => 10 ); query_posts( $args_2 );
Здесь мы выводим 10 записей из рубрики с id 20:
В результате работы двух этих функций на экран будет выведено сначала 9 записей из рубрики с id 10, а потом 13 записей из рубрики с id 20 – то есть произойдет дублирование трех закрепленных статей.
Исправить эту проблему можно так:
$args_1 = array( 'cat' => '10', 'showposts' => 6 ); query_posts( $args_1 ); $sticky_array = get_option( 'sticky_posts' ); //массив с id закрепленных записей $args_2 = array( 'cat' => '20', 'showposts' => 10, 'post__not_in' => $sticky_array, ); query_posts( $args_2 );
Первый цикл мы оставляем без изменений – в нем будут выводиться закрепленные записи.
После этого в переменную (массив) мы записываем id всех закрепленных записей, после чего подставляем его во второй цикл, указав в параметре – “post__not_in”, то есть просто указываем id тех статей, которые выводить не нужно.
Вот, в принципе, и всё, предлагаю посмотреть и другие уроки по WordPress, удачи!