Несколько примеров использования query_posts

Несколько примеров использования query_posts
Бывают случаи когда на главную (или какую нибудь другую) страницу нужно вывести записи только из определенной категории, или вообще только определенные записи. Для этого в 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 смотрите здесь.

Предыдущие записи из рубрики `Настройка WordPress`

48 комментариев

Deimos, 02.10.2009 в 20:17

pixel, привет, для статической страницы это не подходит.... или может я не правильно понял что ты хочешь сделать... напиши подробнее....
На счет плагина - это Subscribe to comments

ОтветитьОтветить
pixel, 02.10.2009 в 20:36

Например есть сайт site.ru
На главную я ставлю
site.ru/page/
Настройки - Чтение - Постоянная страница.

Если я проделаю то, что написано в статье, будет ли у меня выводится на главной, записи из нужных рубрик, как я настрою. То есть главная страница у меня будет
site.ru/page/

ОтветитьОтветить
pixel, 05.10.2009 в 06:03

query_posts('pagename=about')
каким образом сделать так, чтобы выводилось несколько нужных мне страниц?

ОтветитьОтветить
OntLiL, 10.10.2009 в 02:08

Приветствую.
У меня к вам вопрос по возникшей проблеме связанной с сортировкой и плагином WP PageNavi:
Я сделал динамическую сортировку записей (о ней написал выше) и после этого "сломался" PageNavi.
При переходе на новую страницу сортировка не сохраняется. Необходимо снова выбрать тип сортировки и только после этого записи отображаются правильно.
Можете подсказать как можно исправить эту проблему?

ОтветитьОтветить
Deimos, 10.10.2009 в 11:09

OntLiL, добрый день, посоветовать могу только одно, сменить плагин WP PageNavi (кстати уже тучу раз слышал от многих программистов что он ужасно корявый и не оптимизированный) - поменять рекомендую на ioni Pagination Plugin (сам не пробывал, но читал хорошие отзывы)

ОтветитьОтветить
Алексей, 17.10.2009 в 23:59

А вот не подскажите как сделать наподобие этого. У нас есть 3 рубрики: слоны, жирафы, кролики. В каждой рубрике по 5 записей. Необходимо вывести на странице одиночной записи (single.php) список оставшихся постов из тематической рубрики (в моем примере, их останется 4). Надеюсь, задал вопрос понятно. =)

ОтветитьОтветить
Элла, 06.01.2010 в 22:38

Вот мне нужно в отдельном вообще дизайне на сайте вывести определенный пост.
Я делаю
query_posts('p=21');
и ставлю этот код в отдельный див в коде.
Но выходит так что пост ставиться в своем родном дизайне внизу нжного дива, а не внутри.
То есть получается что query_posts выводит запись уже оформленной.
А мне надо только заголовок и текст от записи вывести .. без родного дизайна темы.
Подскажите пожалуйста какой mysql запрос сделать чтобы вывести только текст и заголовок без дизайна поста.
Заранее спасибо.

ОтветитьОтветить
Deimos, 06.01.2010 в 22:43

Элла, а почему просто сами не хотите вписать в шаблон руками ссылку, без использования query_posts? Или ID поста будет изменяться? Если да, то к сожалению не видив весь код я не смогу Вам помочь, стукните мне в асю 21628178семь.... покажите весь код и я напишу куда и что надо вставить 😉

ОтветитьОтветить
RaSH, 09.02.2010 в 23:04

Здравствуйте. А есть что-то похожее для вывода комментариев только из одного поста в сайтбаре? С php к сожалению не дружу =( Можно ли это реализовать?

ОтветитьОтветить
RodgerFox, 16.02.2010 в 20:33

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

ОтветитьОтветить
ElectroRat, 18.02.2010 в 17:30

привет. ситуация такая, вставил код в index.php

Со старта все работает хорошо, выводятся посты из рубрик 1,2,4. Вот если нажать на next_posts_link('Предыдущая'), то сортировка не работает.
Как лучше поступить в таком случае!?

ОтветитьОтветить
ElectroRat, 18.02.2010 в 17:32

вот код

php query_posts($query_string.'cat=1,2,4'); ? >
php if (have_posts()) : ? >
php while (have_posts()) : the_post(); ? >

ОтветитьОтветить
ElectroRat, 18.02.2010 в 18:16

вставил в строчку & и все работает отлично.

было php query_posts($query_string.'cat=1,2,4'); ? >

стало php query_posts($query_string.'&cat=1,2,4'); ? >

Проблему решил, вот только не могу разобраться почему так.

ОтветитьОтветить
muar, 19.02.2010 в 01:53

А как можно вывести не посты целиком по тегу, а их заголовки в виде ссылок?

ОтветитьОтветить
Roman, 14.01.2011 в 11:40

Вопрос.
php query_posts("meta_key=".$data[0])."&meta_value=".$data[1].""); ?>
php if (have_posts()) : ?>
php while (have_posts()) : the_post(); ?>
// вывод поста
php endwhile; ?>
php endif; ?>

если после него опять запустить цикл wordpress

php if (have_posts()) : ?>
php while (have_posts()) : the_post(); ?>
// вывод поста
php endwhile; ?>
php endif; ?>

то этот цикл уже не срабатывает.
Что я хочу: вывести посты с указанными параметрами через квери_постс, а затем вывести ВСЕ посты.

ОтветитьОтветить
Dimitry, 03.03.2011 в 16:08

Спасибо выручили, при поиске не должны били выводится определенные товары.
Все сраслось, одним кликом мыши.

ОтветитьОтветить
Тимофей, 30.06.2011 в 09:52

Здравствуйте!
Подскажите пожалуйста, нигде не нашел ответа.
Мне нужно вывести по одной записи из рубрики. Типа ленты новостей...
Код ниже. Насколько я понимаю вп берет все 8 записей из 1 категории...

отличный у вас сайт!

ОтветитьОтветить
Тимофей, 30.06.2011 в 14:27

Roman, Наверное надо поставить wp_reset_query();- сбросить очередь...

ОтветитьОтветить
Игорь, 24.07.2011 в 23:05

А как вывести все категории??

ОтветитьОтветить
Игорь, 24.07.2011 в 23:08

Например в плагине [nggallery id=1] что прописать вместо id=1 что бы выводились все галереи?

ОтветитьОтветить

Комментировать

Новые комментарии