Нередко, создавая свой собственный шаблон на wordpress, возникает ситуация, когда требуется создать вывод постов в соответствии с определенными параметрами (фильтрами). Я сейчас не говорю о шаблонных страницах, типа архивы или определенная рубрика (в этих случаях обычно все намного проще). Речь идет о совершенно произвольной странице.
Пусть, к примеру, вы создали страницу news.php и хотели бы, чтобы здесь выводились только обновления сайта за 2012 год и относящиеся к категории «пресс-релизы». Как вывести эти посты?
Есть два способа:
1. Написать свой собственный скрипт на php, с помощью которого из базы данных будет подтягиваться нужная информация.
2. Использовать функцию, которая есть в wordpress – querry_posts().
Второй вариант более быстрый и простой, поэтому поговорим именно о нем.
Итак, возвращаясь к приведенному выше примеру, напишем инструкцию, которая позволит нам получить все посты за 2012 год из рубрики «пресс-релизы».
Первое, что нам нужно определить, это id данной рубрики. Этот идентификатор вы сможете увидеть при редактировании данной рубрики в админке Вордпресс. В браузере вы увидите URL, окончание которого выглядит примерно так:
/wp-admin/categories.php?action=edit&cat_ID=5
Уникальный id данной категории в самом конце – 5.
Далее создаем такую инструкцию:
$news=query_posts("cat=5&year=2012&posts_per_page=-1");
где
cat – это идентификатор нужной категории
year – год, к которому относятся записи
posts_per_page – количество записей, которое нам нужно получить. Если вы указываете «-1», то из базы выбираются все посты данной рубрики за 2012 год. Если вам нужно получить только последние 10 записей, укажите posts_per_page=10.
Все считанные посты теперь хранятся в объекте $news. Чтобы посмотреть его содержимое, вы можете воспользоваться командой:
print_r($news);
Информация, выведенная на экран поможет вам понять, каким образом получить доступ к содержимому каждой записи.
Например, содержимое самой свежей записи можно получить так:
$name=$news[0]->post_title;//получаем заголовок
$date=$news[0]->post_date;//получаем дату публикации
$exc=$news[0]->post_excerpt;//получаем анонс поста
Для прохода по всем записям, вам нужно просто создать цикл.
Рекомендуется также в самом конце вашего кода (после цикла с выводом постов) обнулить все переменные, связанные с функцией querry_posts():
wp_reset_query();
Это позволит избежать ошибок при использовании на данной странице нескольких обращений к функции querry_posts().