Фильтрация постов – query_posts()
Опубликовано 7 мая, 2009 в WordPressЭта информация пригодится тем, кто любит тонкую ручную настройку WordPress.
Самой величественной и мощной функцией в WordPress, на мой взгляд, является query_posts(). Благодаря этой функции, можно настроить какой угодно вывод постов, по каким угодно критериям. Что-то вроде фильтра.
Для примера возьмем этот блог – на главной выводятся только те посты, что не относятся к категории оффтопика, блог все же тематический, мне показалось, что так будет правильно. Чтобы этого добиться, я поставил в index.php моей темы перед » if (have_posts()) :» следующий код:
<?php
if ($_SERVER['REQUEST_URI'] == '/') {
query_posts("cat=4,3,21,45,8,25,32,1,7,6,24");
}
?>
Не трудно догадаться, что эта функция выбирает нужные посты перед циклом вывода этих самых постов. В данном случае фильтр применяется только на главной странице (if ($_SERVER['REQUEST_URI'] == ‘/’)), это особенность темы, если в теме присутствует файл archive.php (archives.php), то такой определитель не нужен. Теперь на главной блога выводятся посты только из категорий, которые я перечислил после «cat=». Необходимы IDы категорий, узнать эти ИДы для каждой категории можно в админке – заходим в управление рубриками, кликаем на конкретную рубрику, видим в адресной строке в конце стоит cat_ID=4. 4 и есть этот ID.
Можно применить какие угодно фильтры, функция реально очень удобная и гибкая. Почитать подробно о ней можно на кодексе (на англ., переводчик в помощь).
Вот несколько примеров использования query_posts:
query_posts("cat=-1,-2,-3") // - исключаем из вывода категории с соотв. идами.
query_posts("category_name=php") // - оставляем только посты, которые в рубрике под названием "php"
query_posts("name=my post") // - оставляем только 1 пост c названием "my post"
query_posts("p=5") // - один пост c id 5
Также можно выводить по датам и другим параметрам, применять фильтры не только к постам, но и к страницам.
Спонсором записи выступает компания АЛИЗА. Объявление: наша компания занимается производством и установкой уличных дверей. Одно из направлений нашей деятельности – секционные ворота. Помимо этого, среди нашего ассортимента вы найдете распашные, откатные ворота, навесы. Заказывайте ворота для своего дома только у официального диллера!
Комментариев: 3. Обязательно оставьте свой!
Такая проблема. Ставлю query_posts(”cat=15?)в файле index.php темы и … ничего. На сайте появляется надпись query_posts(”cat=15?). В чем проблема?
Это php код, функцию нужно вставлять между тегами php :
<?php query_posts(‘cat=15′); ?>
Как обойти главную страницу? По умолчанию все записи выводятся на главной странице. Я хочу чтобы на главной странице остались лишь определенные посты. Для этого я создал рубрику “на главную”, с которой и должны были появляться посты. Теперь проблема.
1. Необходимо чтобы на главной странице появлялись посты только с рубрики “на главную”. Ставлю query_posts(”cat=15?)в файле index.php темы и … ничего. На сайте появляется надпись query_posts(”cat=15?). В чем проблема?
2. Необходимо чтобы в списке рубрик рубрика “на главную” не отражалась. Ставлю
…и ничего. Рубрика “на главную” как стояла в списке так и стоит.
Пососветуйте что-нибудь?