Как вывести посты в wordpress с помощью функции querry_posts.


Нередко, создавая свой собственный шаблон на wordpress, возникает ситуация, когда требуется создать вывод постов в соответствии с определенными параметрами (фильтрами). Я сейчас не говорю о шаблонных страницах, типа архивы или определенная рубрика (в этих случаях обычно все намного проще). Речь идет о совершенно произвольной странице.

Пусть, к примеру, вы создали страницу news.php и хотели бы, чтобы здесь выводились только обновления сайта за 2012 год и относящиеся к категории «пресс-релизы». Как вывести эти посты?

Есть два способа:

1. Написать свой собственный скрипт на php, с помощью которого из базы данных будет подтягиваться нужная информация.

2. Использовать функцию, которая есть в wordpress — querry_posts().

Второй вариант более быстрый и простой, поэтому поговорим именно о нем.

Итак, возвращаясь к приведенному выше примеру, напишем инструкцию, которая позволит нам получить все посты за 2012 год из рубрики «пресс-релизы».

Первое, что нам нужно определить, это id данной рубрики. Этот идентификатор вы сможете увидеть при редактировании данной рубрики в админке Вордпресс. В браузере вы увидите URL, окончание которого выглядит примерно так:

/wp-admin/categories.php?action=edit&cat_ID=5

Уникальный id данной категории в самом конце – 5.

Далее создаем такую инструкцию:

1
$news=query_posts("cat=5&year=2012&posts_per_page=-1");

где
cat – это идентификатор нужной категории
year – год, к которому относятся записи
posts_per_page – количество записей, которое нам нужно получить. Если вы указываете «-1», то из базы выбираются все посты данной рубрики за 2012 год. Если вам нужно получить только последние 10 записей, укажите posts_per_page=10.

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

1
print_r($news);

Информация, выведенная на экран поможет вам понять, каким образом получить доступ к содержимому каждой записи.

Например, содержимое самой свежей записи можно получить так:

1
2
3
$name=$news[0]->post_title;//получаем заголовок
$date=$news[0]->post_date;//получаем дату публикации
$exc=$news[0]->post_excerpt;//получаем анонс поста

Для прохода по всем записям, вам нужно просто создать цикл.

Рекомендуется также в самом конце вашего кода (после цикла с выводом постов) обнулить все переменные, связанные с функцией querry_posts():

1
wp_reset_query();

Это позволит избежать ошибок при использовании на данной странице нескольких обращений к функции querry_posts().





Другие посты

Категория: WordPress

Комментарии (2)

 

  1. Андрей:

    Добрый день.

    В статье мне не понятно куда этот код нужно вводить в файл? куда- ещё ? ведь в wordpress нет командной строки ))) так бы я быстро проверил…

    Подскажите пожалуйста подробнее что куда нужно вставлять именно ваш код начиная с самого начала со строчки:
    $news=query_posts(«cat=5&year=2012&posts_per_page=-1″);

    и как выводить эту запись допустим на страничку в wordpress вашим методом: print_r($news);

    Просто везде читаю статье про такие методы — но не могу найти полного и пошагово действия — чтобы реально можно было сделать и получить такое же на своеём сайте используя свои рубрики… Прошу вас напишите ответ ))) Буду очень благодарен…

  2. admin:

    Эти инструкции больше для разработчиков:) Вам, возможно, будет проще воспользоваться стандартными инструментами WordPress в виде виджетов.

Оставить комментарий