Вывод постов из одной категории в разных местах

В сегодняшнем посте я расскажу об одной проблеме (точнее это не совсем проблема), с которой я столкнулся недавно, когда верстал сайт на заказ. Это лирика, перехожу сразу к сути.

Речь пойдет о движке WordPress. Предположим нам нужно вывести два блока с постами одной категории и расположить эти два блока в разных местах, например один блок — верх сайдбара, другой блок — низ сайдбара. По пять постов в каждом блоке. Теперь самое интересное: в первом блоке выводятся последние посты, а во втором выводятся также последние посты, но те, которые идут до предыдущих.

Итак, начнем с вывода первого блока. Выведем в нем 5 последних постов нужной категории. Делается это при помощи функции get_posts:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    < ?php $posts = get_posts («category=1&numberposts=5»); ?> < ?php if ($posts) : ?> < ?php foreach ($posts as $post) : setup_postdata ($post); ?>

  • < ?php the_title(); ?>
  • < ?php endforeach; ?> < ?php endif; ?>

В category=1 — это идентификатор категории. Чтобы его узнать, зайдите в админку в раздел Рубрики и в списке созданных категорий наведите мышью на нужную, в строке состояния ищите …&cat_ID=1, где 1 и есть идентификатор категории.

numberposts=5 — это количество выводимых постов. В нашем случае нам и нужно два блока по пять постов.

Что такое < ?php the_permalink(); ?> и < ?php the_title(); ?> я думаю вы знаете. Но если кто не знает, то первая функция выводит ссылку на пост, а вторая — заголовок поста.

Все, первый блок готов. Теперь сделаем второй. Второй делается точно также, поэтому просто скопируйте его. Но, если вы помните, во втором нам нужно также вытянуть 5 последних постов этой же категории, но вывести нужно те посты, которые идут до предыдущих. Иначе будет два одинаковых блока.

Скажу честно, я столкнулся с подобным в первый раз. Перерыл тонну наших сайтов, так и не нашел ответа. В итоге нашел случайно на зарубежном форуме намек, а остальное додумал сам. Опять лирика . В общем делается это элементарно.

Как я уже и говорил копируем просто первый блок и в функцию get_posts («category=1&numberposts=5″); после 5 добавляем &offset=5, offset=5 — запрещает вывод последних 5 постов. Нам пять как раз и нужно, поскольку мы их уже вывели в первом блоке. В итоге код будет выглядеть так:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    < ?php $posts = get_posts («category=1&numberposts=5&offset=5»); ?> < ?php if ($posts) : ?> < ?php foreach ($posts as $post) : setup_postdata ($post); ?>

  • < ?php the_title(); ?>
  • < ?php endforeach; ?> < ?php endif; ?>

Вот и все, мы получили 2 блока, в которых отображаются посты одной категории. В первом — последние, во втором те, которые идут до предыдущих. Все очень просто. Если что непонятно, задавайте вопросы в комментариях.

inet-earn.ru

Буду признателен Вам если поделитесь статьей:

Related Posts