Бывают случаи когда на главную (или какую нибудь другую) страницу нужно вывести записи только из определенной категории, или вообще только определенные записи. Для этого в WordPress и существует query_posts.
Теперь немножко подробнее - для вывода записей в WordPress используется цикл, называемый "The Loop". Обычно он выглядит так:
<?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> //Тут Ваш код <?php endwhile; ?>
Если перед циклом "The Loop" поставить функцию query_posts с нужными нам параметрами, то мы добьемся нужного нам результата. Вот пример такого использования:
<?php query_posts('cat=-1,-2,-3'); ?> <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> //Тут Ваш код <?php endwhile; ?>
Такой код выведет на главную записи из всех категорий кроме категорий с ID 1, 2 и 3.
Ниже преведены еще несколько примеров использования query_posts:
query_posts('cat=-3') - Не показывать категорию id которой равно 3;
query_posts('cat=-1,-2,-3') - Не показывать категории, id которых равны 1, 2 и 3;
query_posts('cat=2,6,17') - Вывести категории с id равным 2, 6 и 17;
query_posts('category_name=WordPress') - Вывести категорию с названием “WordPress”;
query_posts('name=Hello World') - Вывести один пост с названием “Hello World”;
query_posts('p=5') - Вывести один пост, id которого равно 5;
query_posts('page_id=7') - Вывести страницу id которой равно 7;
query_posts('pagename=about') - Вывести страницу с названием “about”;
query_posts('cat=18&showposts=5') - Вывести 5 постов из категории с id=18;
query_posts('cat=3&orderby=date&order=ASC') - Вывести посты из категории id которой равно 3, сортировать по дате в хронологическом порядке(DESC - в обратном порядке);
query_posts('posts_per_page=10') - Вывести 10 постов на страницу (при значении -1 выводит все посты);
query_posts('cat=3&year=2008') - Вывести посты из категории с id=3 за 2008 год;
query_posts('orderby=rand&showposts=3&cat=3') - выводин рандомно, т.е. случайно 3 записи из 3 категории;
query_posts('orderby=rand&showposts=3') - выводит случайно 3 записи из всех категорий;
query_posts('meta_key=cars&meta_value=volvo') - выводит список постов с произвольным полем “cars” и значением этого поля volvo.
Если возникнут какие нибудь вопросы, то обязательно спрашивайте 😉
Подробное описание функции query_posts смотрите здесь.
Подскажите плиз, а как можно вывести записи с определенной меткой, а также выводить все записи кроме записей с определенной меткой.
Спасибо что откликнулись так быстро (достаточно редко получаешь ответ за 17минут).
Есть вопрос.
Есть несколько категорий.
Как вывести посты, которые принадлежат только к определенным категориям? то есть вариант, когда посты принадлежат не к определенным категориям в целом, а как например.
Есть категории Страна, Город, Район. Как сделать вывод по определенной Стране/городу/Району вместе, исключая другие посты, принадлежащие другим Странам/Городам/районам? Ведь если использовать запись атрибутов Cat = n то выведет и те посты , которые могут совпадать по стране, но не погороду...
как быть тут....?
а как на странице с id3, например, вывести посты из категории с id5 ?
если можно, то подробнее
у меня просто 3 страницы и возникла необходимость вывести на них сообщения из разных рубрик
я не знаю как id страницы определить
if (id_страницы)
{// далее знаю }
Скажите плз, как вывести все посты кроме постов с 18-ой категории???
Я делал так:
...
все отлично, только одно но!
На главной выводятся все правильно, а вот при переходе на ...?paged=2 , ...?paged=3, и тд., отображаются те посты что на хомяке!!!! Подскажите пожалуйста как с этим бороться!!!
все заработало))! у меня было так:
query_posts('&cat=-18');
а надо было так:
query_posts($query_string.'&cat=-18');
Скажите плиэ, что делает метод $query_string !!??
Здравствуйте.
Не поможете мне с одной проблемой:
не получается у меня никак сделать динамическую сортировку постов по дополнительному полю. Голову уже сломал, а результата нет(
Сортировка по названию, дате, изменению без проблем работает, а по дополнительному полю никак((
Сегодня наконец-то сделал эту сортировку.
Проблема, как оказалось, легко решается. В лоб, если можно так сказать.
Вся проблема решилась этой строчкой.
query_posts($query_string.'&meta_key=stoimost&orderby=meta_value&order=ASC');
Что самое интересное не получалось.
Получилось всё только тогда, когда я с нуля создал новый шаблон. Может в темплейте был какой косяк...
Привет 🙂 Подскажи пожалуйста, если я поставлю вместо главной страницу, то уместно будет использовать то, что описано выше?
У тебя внизу есть Оповещать о новых комментариев по почте, что за плагин?
Antoha вот пример как вывести записи с метками "плагины" и "шаблоны":
а как не выводить записи с метками "плагины" и "шаблоны" я не знаю, надо подумать-почитать, просто минус не получается 🙁
Со вставкой ID тоже фокус не прокатывает, теги только с именем правильно работают.
Если кто знает напишите, мне тоже было бы интересно 😉