Здравствуйте, это снова я. По умолчанию в wordpress на главной странице выводятся самые свежие записи. Как это изменить? Как в wordpress вывести записи на странице только те, которые вы хотите? Сегодня я вам об этой расскажу, а заодно и о функции query_posts()
, которая нам поможет в этом деле.
Использование функции
Я буду показывать пример вывода произвольных постов на главной странице. Соответственно, редактировать мы будем файл index.php
. Что делать, если вы хотите выводить на главной не свежие записи, а самые лучшие? Или выводить только те, что принадлежат к определенной категории? Все это мы сегодня научимся делать, но прежде всего нужно определиться с тем, где мы напишем нашу функцию. В файле index.php вы увидите цикл if (have_posts())
… вот именно перед ним мы и напишем функцию.
Но пока она пустая и ничего не будет делать, самое время начать работать с ее параметрами!
Вывод статей по произвольным полям
Итак, это первая возможность, которую вы рассмотрим. Допустим, я хочу вывести на первую страницу запись «Как создать сайт в блокноте» и «CSS селекторы». Первым делом нужно отредактировать эти записи, добавив им произвольное поле.
Как это сделать? На странице редактирования поста в самом верху вы можете увидеть кнопочку «Настройки экрана», вот ее и надо нажать. Там нужно выбрать галочку возле надписи «Произвольные поля».
Теперь ниже тела статьи вы сможете наблюдать интерфейс для управления этими произвольными полями. Тут можно ввести имя и значение нового поля, вводим что-то интуитивно понятное на английском и жмем «Добавить произвольное поле». Все, теперь оно добавлено. Смотрите, я выбрал имя поля —
article
, а значение — favorite
, так что тут уже сразу понятно, что это мои избранные статьи, самые лучшие. Соответственно, произвольное поле с таким именем и значением нужно добавить ВСЕМ ЗАПИСЯМ, которые вы планируете вывести на главной.
К счастью, для второй и последующих статей не нужно будет вводить имя произвольного поля заново, теперь его можно выбрать, но значение «favorite» все так же вводите вручную.
Когда поле прописано, самое время показать код нашей функции:
<?php query_posts('meta_key=article&meta_value=favorite'); ?>
Оп! Теперь на главной странице отображается только наши 2 статьи, я показываю пример работы на локальном сервере. Единственная беда заключается в том, что если статей для вывода будет больше, чем на 1 страницу, то на второй будут те же самые страницы, потому что нет синхронизации с номером страницы. Чтобы это исправить, нужно добавить в функцию еще кое-какой код:
<?php query_posts('meta_key=article&meta_value=favorite&paged='.get_query_var('paged')); ?>
Дописали третий параметр paged, который как раз и добавляет функцию, которая позволяет получить номер страницы и вывести соответствующие посты. Дописывайте этот параметр всегда, если при использовании query_posts
у вас образуется несколько страниц со статьями.
Как в WordPress вывести посты определенной категории?
Это сделать даже проще, чем с произвольными полями. Для этого достаточно знать идентификатор рубрики. Для этого зайдите в Записи — Рубрики и наведите курсор на нужную рубрику. В самом низу выведется url
-адрес, в нем, если присмотреться, вы увидите параметр tag_Id
, вот его значение вам и нужно запомнить. Например, я хочу выводить статьи только рубрики CSS-рецепты,
id
этой рубрики 2. Вот код функции:
<?php query_posts('cat=2&paged='.get_query_var('paged')); ?>
Нам понадобился параметр cat, а в качестве его значения выступает id
рубрики. Все просто. А если вы хотите сделать наоборот, чтобы выводились все посты, кроме тех, что в определенной рубрике, поставьте перед ее id
минус.
<?php query_posts('cat=-2&paged='.get_query_var('paged')); ?>
Выведет все записи на сайте, кроме тех, которые в рубрике Css-рецепты.
Выбор нескольких категорий для вывода
Хочу отметить, что если вывести нужно несколько рубрик, то синтаксис немного другой:
<?php query_posts(array('category__in' => array(2, 3), 'paged'=> get_query_var('paged'))); ?>
Теперь мы записали параметры в виде массива. На главной будут выведены записи из категорий с ID 2 и 3. Отлично.
Как в wordpress вывести записи по меткам
Один из наиболее удобных способов — просто добавьте желаемым статьям метку и потом выведите их по ней. Тут все предельно просто, при редактировании поста добавляем ему метку. Я добавил метку «special»:
<?php query_posts('tag=special&paged='.get_query_var('paged')); ?>
Обращение к меткам происходит с помощью параметра tag, а его значением как раз является имя метки. Ну и как обычно добавляем функцию для получения номера страницы, чтобы навигация работала правильно.
Итак, я думаю вам хватит этих способов, чтобы вывести на главной странице своего сайта нужные записи. Я напомню, в этой статье было рассмотрено, как выбрать посты по:
- наличию произвольного поля
- принадлежности к категории
- наличию метки
Спасибо. Давно искал подобный пост. Очень помог в решении проблемы.