X
  • Дизайн та розробка сайту
  • Дизайн і створення сайтів. Розробка тем для WordPress. Створення Landing Page.
  • office@gnatkovsky.com.ua
  • @vgnat
  • Написати мені
Замовити послугу

Query_posts и постраничная навигация WordPress

Приклад
  • 2024-11-21
  • 7741 переглядів

  • Дизайн та розробка сайту

Доброго времени суток. 🙂

Часто бывает, что вебмастерам приходится вносить изменения в основной цикл. Такое действие нужно тогда, когда надо убрать вывод какой-то рубрики, изменить сортировку или попросту задать случайный порядок. Такой цикл можно сделать с помощью функции query_posts.

Query_posts

У меня уже был урок, где благодаря query_posts, мы осуществляли Вывод случайных записей WordPress. В той статье можете посмотреть и параметры для query_posts, чтобы настроить цикл. В этой статье хочу показать, как сделать постраничную навигацию с query_posts.

Многие сталкиваются с проблемой пагинации на query_posts. В стандартном ее виде, она не работает и все. Искал я долго решение и однажды благодаря всезнающему Гуглу, нашел.

Чтобы все заработало, нужно перед основным циклом, на главной странице или других, где этот цикл встречается и Вам его нужно изменить, добавить вот такой вот код:

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') :
 query_posts('posts_per_page=3&cat=4&paged=' . $paged);
?>

Во второй строке задаем параметры query_posts: 3 записи на страницу и выводить только записи с 4 каталога. Меняйте все под себя, параметры query_posts, как я и писал, изучайте в прошлой статье.

Если Вам нужно вывести цикл на статической странице, то код будет немного другим, на две строки больше. Параметры query_posts меняйте в четвертой строке.

<?php
if ( get_query_var('paged') ) { $paged = get_query_var('paged'); }
elseif ( get_query_var('page') ) { $paged = get_query_var('page'); }
else { $paged = 1; }
query_posts('posts_per_page=3&cat=4&paged=' . $paged);
?>

В итоге, для первого варианта(для второго по сути то же самое) у меня код получился примерно такого вида:

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') :
query_posts('posts_per_page=3&cat=3&paged=' . $paged);
?>
<?php if (have_posts()) : ?><?php while (have_posts()) : the_post(); ?>

//Вывод миниатюры, тизера и тд

<?php endwhile; ?>
<?php if (function_exists('wp_corenavi')) wp_corenavi(); ?>
<?php else : ?>
<?php include(TEMPLATEPATH . '/404.php');?>
<?php endif; ?>

В 10 строке функция постраничной навигации без плагина, о которой можете прочитать в статье - Постраничная навигация в WordPress без плагина.

Ко мне обратился читатель блога и сообщил, что метод не работает. Я проверил его код и обнаружил, что ошибка была через плагин WP-PageNavi. Так что лучше используйте навигацию из моей статьи.

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

На этом все, спасибо за внимание. 🙂

Якщо Вам була корисна моя праця, можете фінансово підтримати сайт або відключити блокувальник реклами, що займе 2 хвилини :)

Хочу підтримати фінансово Хочу відключити блокувальник

Оцініть статтю
  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
Проголосовало: 11, в среднем: 4.3 из 5
Читайте також

Deprecated: Функція WP_Query викликана з аргументом, який вважається застарілим з версії 3.1.0! Вираз caller_get_posts застарілий. Використовуйте ignore_sticky_posts. in /var/www/vhosts/gnatkovsky.com.ua/gnatkovsky.com.ua/public/wp-includes/functions.php on line 6078