Аргументы WP_Query рубрики и теги
Как вывести записи (посты) по произвольному полю в WordPress
Выводим записи (посты, статьи) в категориях (рубриках, разделах) и тегах по произвольному полю. Используем функцию WP_Query в шаблоне своего сайта на WordPress.
Нижеследующие разновидности кодов были отточены практикой и временем. Было убито очень много времени на то, чтобы WP_Query заработал именно так, как я от него хотел. В своем роде уникальные коды, переписывающие стандартные выводы записей WordPress.
Функционал этих кодов нигде больше нельзя найти (на момент публикации поста), за исключением отдельных вставок, которые являются общими рекомендациями от WordPress и некоторых участков, позаимствованных из других открытых источников.
Эти php коды для вывода записей через WP_Query, для удобства, даются без конструкций if (have_posts()). Но без неё работать не будут. Правильная конструкция if (have_posts()) для этих кодов приведена ближе к окончанию статьи.
1. WP_Query PHP код для вывода записей в КАТЕГОРИЯХ
Самый простой вывод постов, исключающий записи из конкретных категорий. Использую его для вывода на главной странице через index.php или home.php.
Также этот код занесен у меня в файл empty.php. Он нужен на тот случай, если человек зашел в категорию, где не должно быть никаких записей, там не будет ничего выводиться, кроме сообщения, что он не должен был попасть на эту страницу (раздел). И предлагаются инструменты для поиска на сайте.
Иногда в код, который выводит все статьи, но исключает определенные рубрики, требуется добавить пагинацию (&paged=’.$paged;), чтобы в последний страницах навигации не было пустых страниц.
В коде ниже выводятся записи с сортировкой по произвольному полю с ДАТОЙ. Выводятся записи с произвольным полем год, затем сортируются от последнего года к предыдущему.
$the_key,
// Сортируем по значению цифры в произвольном поле
‘orderby’ => ‘meta_value_num’,
// Сортируем от большего к меньшему
‘order’ => ‘DESC’,
// Исключаем категории
‘cat’ => ‘-310’
);
global $wp_query;
query_posts(
array_merge(
$wp_query->query,
$args
)
);
?>
2. WP_Query PHP код для вывода постов в КАТЕГОРИИ с БЮДЖЕТОМ
Следующий вывод WP_Query выводит, в категориях WordPress записи, по произвольному полю «Бюджет». В этом поле находятся цифровые значения.
Допустим требуется вывести в категории «Бюджет» все записи, которые будут сортироваться от большей цифры к меньшей.
3. WP_Query PHP код для вывода постов в разделе РЕЙТИНГ
Нижеследующий код выводит все статьи с произвольным полем год, сортируя по этому произвольному полю (от последнего года, до меньшего). Одновременно с этим исключает все записи из категорий меньше значения рейтинга 9.
4. WP_Query PHP код для вывода постов в КАТЕГОРИИ с ДАТОЙ
В php коде ниже вводятся две переменные с ДАТАМИ. Текущая дата сравнивается с датой, которая будет в будущем.
Для чего это нужно? Например, я хочу вывести ТОВАРЫ, которые только поступят в продажу или ФИЛЬМЫ, которые только выйдут в ближайшем будущем. Если, например, такие ТОВАРЫ или ФИЛЬМЫ или ЧТО-ТО другое существует, то следует вывести ЗАПИСИ с этими произвольными полям. В противном случае в категории ничего не будет выводиться.
5. WP_Query PHP код для вывода записей в разделе ТЕГОВ
Вывод записей в тегах, в отличии от категорий, немного другой. По какой-то причине, в тегах не работает функция исключающая категории из WP_Query:
К счастью, работает другая структура:
И код вывода $wp_query для тегов будет такой:
6. WP_Query PHP код для вывода записей в разделе ПОИСКА
Для вывода WP_Query на странице поиска используем совершенно иной код:
Для специальной обработки запроса WP_Query в файле search.php добавляем в файл functions.php своей темы следующий код:
Он сортирует записи в категории ПОИСК по произвольному полю ГОДЫ.
В заключение. Очень важно.
После любого из перечисленных выше кодов (кроме того что в functions.php) нужно вывести следующую функцию:
Обязательная нужна такая конструкция:
Это необходимо, чтобы не выводить пустые страницы, когда следует исключить записи из определенных рубрик на основании сравнения.
7. Код для главной страницы (раздела) для вывода и РАЗДЕЛЕНИЯ записей по ТЕГАМ
Следующая конструкция выводит записи из категории 27. Сортирует их случайно. Выводит 4 записи.
В конструкции выше код отвечающий за вывод поста находится в отдельном файле:
8. PHP для вывода и РАЗДЕЛЕНИЯ записей по РАЗДЕЛАМ
Тот же самый код, но для вывода записей из РАЗДЕЛОВ, а не ТЕГОВ. Значения вывода ($args) изменены на другие. В том числе учтена пагинация (&paged=’.$paged;), в конструкции выше она исключена из работы.
9. Выводим один конкретный пост
Типовые конструкции для вывода одного определенного поста. В данном случае будет выведен пост с номером 1. Под конец wp_reset_postdata сбрасывает вывод WP_Query, так что можно выводить и любые другие посты.
$the_query = new WP_Query(‘p=1’);
while ($the_query->have_posts() ) : $the_query->the_post();
10. Вывод записей с незаполненным произвольным полем
Можно вывести записи с пустым значением в конкретном произвольном поле. Иногда такой способ помогает найти все записи с незаполненными значениями. Как альтернатива поиска данных через MySQL.
array(
array(
‘key’ => $the_key,
‘compare’ => ‘not exists’,
‘value’ => null,
),
)
);
global $wp_query;
query_posts(
array_merge(
$wp_query->query,
$args
)
);
if ( have_posts() ) : while ( have_posts() ) : the_post();
get_template_part( ‘/ploshadka.net’ );
endwhile;
endif;
wp_reset_query();
?>
11. Выводим одну конкретную страницу
В заключение как можно вывести вместо записи содержимое страницы. Выводим страницу с >
‘.apply_filters(‘post_title’, $t).’
English Query (запросы по теме на английском языке)
How To Use WP_Query In WordPress
Order Results WP_Query by Meta Value
Order by ASC, DESC in custom WP_Query
Sorting Query Results with Multiple Meta Keys
How to sort the result of wp_query
Также читайте
Привет. Ты находишься на моём сайте. Я разработчик. Здесь я делюсь своими наработками и знаниями. Спрашивай в комментариях, если тебе что-то не понятно или пиши, если есть что добавить.
Если вам пригодилась информация, вы можете поблагодарить автора сайта символическим пожертвованием:
Комментарии к статье “ Как вывести записи (посты) по произвольному полю в WordPress ”
Очень классно! Полезная информация для всех! Наглядно и доступно! Спасибо автору!
Аргументы WP_Query: рубрики и теги
В этой рубрике Вы найдете бесплатные уроки по WordPress, которые позволят Вам усовершенствовать свой блог.
Почему WordPress лучше чем Joomla ?
Этот урок скорее всего будет психологическим, т.к. многие люди работают с WordPress и одновременно с Joomla, но не могут решится каким CMS пользоваться.
Про шаблоны WordPress
После установки и настройки движка нам нужно поработать с дизайном нашего сайта. Это довольно долгая тема, но мы постараемся рассказать всё кратко и ясно.
Самые первые настройки после установки движка WordPress
Сегодня мы вам расскажем какие первые настройки нужно сделать после установки движка WordPress. Этот урок будет очень полезен для новичков.
10 стратегий эффективного продвижения статей в блогах на WordPress
Продвижение статей в блоге — непростая задача. Часто бывает, что вы пишете действительно хороший контент, включаете визуальные эффекты, делаете правильные корректировки SEO, но это не дает ожидаемого результата.
Топ WordPress альтернатив для создания персонального сайта
Нужен персональный сайт, но вы не хотите задействовать WordPress? Тогда данная подборка для вас.
В поисках профессионального рабочего окружения для WordPress
За время работы проекта мы не раз рассказывали о настройках рабочего окружения для движка WordPress. WAMP для Windows, MAMP для Mac или XAMPP для обеих операционных систем. Сегодня мы бы хотели поговорить о минусах перечисленных инструментов, а также пролить свет на новые решения.
Работа с WordPress CLI
Данное руководство будет полезно как администраторам, так и обычным пользователям. В WordPress появился консольный инструмент, который поможет сэкономить кучу времени!
$ wp_query и WP_QUERY — одинаковые аргументы, разные результаты
Я провожу весь этот день, пытаясь выяснить проблему с комбинацией пользовательского запроса и пользовательских типов записей. Это мое последнее средство .
Я написал плагин, который вводит некоторые пользовательские типы сообщений в мой WordPress. Чтобы отобразить их в основном запросе, я подключил их к следующему запросу:
С другой стороны, в моей теме я установил ajax-нумерацию следующим образом:
и часть сценария:
Если я передаю массив query_vars, полученный из $ wp_query с измененным значением paged, обратно в WP_QUERY, он возвращает неправильный набор сообщений. Похоже, что WP_QUERY не учитывает cpts в цикле. Хотя эти cpts упоминаются в ‘post_type’ массива query_vars и, таким образом, передаются новому WP_QUERY.
Когда я вручную устанавливаю ‘post_type’ и передаю только этот аргумент, он работает как положено. Меня поражает аспект, заключающийся в том, что результирующие переменные query_vars, используемые в вызове ajax для WP_QUERY, абсолютно одинаковы, но только когда я вручную устанавливаю ‘post_type’, разбиение на страницы работает так, как должно.
Я не знаю, было ли это несколько понятным объяснением, но я благодарен за каждую идею, которая могла бы помочь мне. Большой THX!
the_title ( ) ?>
То же цикл, используя WP_Query:
$args = array ( ‘cat’ => 4 ) ;
$category_posts = new WP_Query ( $args ) ;
if ( $category_posts -> have_posts ( ) ) :
while ( $category_posts -> have_posts ( ) ) :
$category_posts -> the_post ( ) ;
?>
the_title ( ) ?>
Как вы можете видеть, на первый взгляд нет большой разницы! Давайте рассмотрим его подробнее:
Построение запросов
На странице категории мы хотим получить список сообщений из этой категории. Так как мы строим запрос с нуля, используя WP_Query, мы должны определить это сами. Мы немного углубимся в это чуть позже.
Создание экземпляра класса и запросов для сообщений
С помощью экземпляра класса и массива аргументов, WP_Query будет пытаться получить указанные сообщения.
Создание цикла
Вы можете использовать любые обычные функции, только не забудьте использовать их в качестве методов объекта:
Вместо have_posts(), используйте $category_posts->have_posts().
Вместо the_post(), используйте $category_posts->the_post().
После того как вы сделали всё что указано выше, вы можете использовать любые теги шаблонов, которые мы знаем и любим.
Если вы посмотрите на это подробнее, то вы увидите, что глобальный объект $post также доступен. Это означает, что если вы используете пользовательский цикл, что-нибудь может пойти не так. Обязательно сохраните первоначальное значение объекта $post и восстановите его после цикла.
Идем дальше.
Легкость, с которой мы можем создавать циклы очевидна, но как на самом деле создавать запросы для записей? Позвольте мне показать вам распространенный метод, который часто используют при создании слайдеров в коммерческих темах.
Очень часто пользователи вашей темы хотят видеть на своих сайтах великолепно выглядящие слайдеры, но они могут быть немного ленивы при создании контента. Многие пользователи также хотят показать будущие записи, которые планируется опубликовать. Давайте создадим запрос для получения предстоящих (т.е. неопубликованых) сообщений, которые имеют изображение.
$args = array (
‘post_status’ => ‘future’ ,
‘meta_query’ => array (
array (
‘key’ => ‘_thumbnail_id’ ,
‘value’ => » ,
‘compare’ => ‘!=’
)
)
) ;
$slider_posts = new WP_Query ( $args ) ;
?>
if ( $slider_posts -> have_posts ( ) ) : ?>
Короткий и совершенно понятный код — просто и красиво.
Значения по умолчанию
Вы, возможно, заметили, что я не уточнил количество необходимых записей в моём запросе. А сколько сообщений в списке? И что за статус поста в первом запросе, который мы сделали?
Значения по умолчанию устанавливаются для многих из наиболее распространенных аргументов. Вот несколько, которые вы не обязаны указывать, если только вы не хотите изменить их:
posts_per_page
По умолчанию используется значение, указанное в параметрах сайта о количестве сообщений на странице.
post_type
По умолчанию используется post.
post_status
По умолчанию используется publish.
Вы можете найти полный список параметров в документации!
Массивы
Во многих случаях вам нужно будет указать несколько значений, которые может принимать аргумент. И WP_Query позволяет использовать массивы, чтобы сделать вашу жизнь проще. Вот несколько примеров:
Вы можете использовать массив для post_status, чтобы получить сообщения с различными статусами. Обратите внимание, что вы можете использовать строку any, чтобы получить сообщения со всевозможными статусами.
Если вы используете пользовательские типы сообщений, вы будете рады услышать, что вы можете использовать массив для значений параметра post_type также.
Для таксономии параметры типа category__in, tag__in и так далее, вы можете использовать массив для указания множества значений.
Обработка Таксономии
WP_Query достаточно хорош, чтобы предложить простой способ сделать сложные запросы к таксономии. Это особенно полезно для веб-сайтов с сложными настройками для коммерческих тем и с большим набором функций. Используемый механизм называется tax_query. Давайте посмотрим на примере.
Скажем, у вас есть сайт: Все о кино. Вы храните фильмы в пользовательском типе записей «movies»; у вас также есть тип записей для жанра, пользовательский тип записей для актеров, и вы используете обычную категорию, чтобы указать, насколько хороший фильм. Давайте найдем все фильмы жанра «Action» в главной роли с Брюсом Уиллисом, которые не являются «Bad»:
Хотя это пример с хардкодом, и может быть полезен только для людей, которые любят «Крепкий орешек», но не трудно понять как расширенный фильтр может быть построен, чтобы позволить пользователям фильтровать ваш контент любым образом, как они хотят.
Узнать больше о использовании параметров таксономии можно в соответствующем разделе документации.
Работаем с метаданными
Вы уже видели, что WP_Query отлично справляется с мета-данными — мы использовали meta_query во втором примере, когда строили слайдер с записями, которые имеют изображения.
Представим, что мы создаем тему WordPress, которая будет использоваться для сайта сдающего квартиру(ы) в аренду. Мы будем хранить квартиры в пользовательском типе записей и использовать мета-данные для хранения дополнительной информации. Таким образом, мы можем легко получать, например, все квартиры, которые могут вместить четырех или более человек, или те у которых есть балкон, или только квартиры на сутки с джакузи.
Чтобы узнать больше о параметрах, которые можно использовать, просто зайдите в раздел Custom Field Parameters в документации по WP_Query.
Методы и свойства
Как только Вы сделали запрос, можно вытянуть много информации из Вашего объекта. Вы можете найти полный список «Методов и свойств» в документации. Вот те, которые я предпочитаю использовать чаще всего:
$query
Показывает строку запроса, которая передается в объект $wp_query. Это очень полезно для устранения неполадок в некоторых случаях.
$query_vars
Показывает ассоциативный массив аргументов, которые вы передали. Если вы делаете много смешиваний и сопоставлений перед передачей аргументов, этот инструмент может быть полезным, чтобы проверить, что все передано правильно.
$post
Содержит запрошенные записи из базы данных.
$found_posts
Удобная вещь, которая показывает общее число найденных элементов (без ограничения установленного аргументом posts_per_page).
С большой силой приходит большая ответственность
WP_Query дает вам большие возможности, но у него есть свои недостатки. Многие люди «сходят с ума», когда они понимают, как легко можно вызывать запросы повсюду.
Имейте в виду, что чем больше запросов, тем больше нагрузка на сервер. При создании сложных запросов могут возникнуть проблемы с RAM на хостинге, которая, вероятно, является ограниченным ресурсом у вас.
Убедитесь в том, что запрос по умолчанию выполняется на каждой странице. Какой смысл в создании нового запроса для получения последних сообщений на главной странице, если он там есть по умолчанию? Используйте кэширование результатов, чтобы снизить нагрузку на сервер.
Если у Вас возникли вопросы, то для скорейшего получения ответа рекомендуем воспользоваться нашим форумом
Функция WordPress query_posts() и get_posts()
Решил сделать описание для одной из самых использованных функций wordpress — query_posts() так как параметров насколько много, что порой сам забываешь их. Хотя работаешь с выборкой query_posts каждый день
Для начала нужно внести ясность, функция query_posts изменяет основной цикл wordpress и это не очень хорошо для создания новых веток WP, но для случаем когда мы действительно решились изменить основной цикл ВП это самое оно, хотя нагрузка на ваш сайт увеличится, ведь будет создан новый WP_Query. Также, функция WordPress query_posts принимает такие же параметры как, альтернативные функции для построения циклов get_posts() и WP_Query.
query_posts входящие параметры
На вход эта функция может принимать параметры записанные в двух вариантах: как массив query_posts( array(«author»=>2, «post_type»=>»post») ) или как строка query_posts(«author=2&post_type=post»).
Параметры query_posts для рубрик / категорий к меню
Параметр query_posts | Тип данных | Описание параметра |
cat | целое число | ID категории, посты которой нужно выбрать |
category_name | строка | имя категории, посты которой нужно выбрать |
category__in | массив чисел | несколько ID категорий, посты которых нужно выбрать |
category__not_in | массив чисел | несколько ID категорий, посты которых нужно исключить из выборки |
category__and | массив чисел | несколько ID категорий, посты которых нужно выбрать, чтобы они одновременно входили во всех их |
Исключить посты определенной категории можно вот так:
Параметры query_posts для типов постов
к менюДля типов постов есть только один входящий параметр:
post_type (строка или массив) — какой тип записей нужно показывать: page, post, attachment, пользовательский тип.
если все посты одного типа
или вот так если нужно получить посты нескольких типов
Параметры query_posts для произвольных полей
к меню
Параметр query_posts | Тип данных | Описание параметра | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
meta_key | строка | название произвольного поля | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
meta_value | строка | значение произвольного поля | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
meta_value_num | число | значение произвольного поля в числовом формате | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
meta_compare | оператор SQL | оператор для проверки значения (=, !=, >, >=, , >=, array( «relation»=>»OR», array(«key»=>»my_param», «value»=>»4», «type»=>»NUMERIC», «compare»=>»=»), array(«key»=>»my_param2», «value»=>»salon», «compare»=>»LIKE») ))); ?> Параметры query_posts и get_posts для страниц и постов (записей) к меню
Примеры использования значений: Вот такой пример может не работать, в связи с недостаточной конкретикой выборки: Вот так, можно легко исключить посты с текущей выборки. Например, если эти посты мы не хотим видеть на главной странице Параметры для сортировки и порядка к меню
Если нужно изменить текущую сортировку локально, можно использовать вот такие значения: Сортировка товаров от самого дешевого к самому дорогому: Параметры для поискаs (строка) — текст для поиска подходящих постов / страниц к меню Параметры для кешированния к меню
Параметры query_posts и get_posts для пагинации к меню
Параметры статусов к меню
Файл: wp-includes/category-template.php (Развернуть) С уважением, Виталий Кириллов Отдельная страница для тэгов WordPress сайта: лист метокВступлениеНедавно я понял, что не уделял тэгам (меткам) WordPress должного внимания. Вчера посмотрел в консоли страницу «Метки» и увидел, что их более 500 и это после удаления не прикрепленных меток. Пора делать для них отдельную страницу. Как всегда даю практическое решение. Для сохранения изменений в шаблоне используем дочернюю тему. Для безопасности, чтобы не потерять сайт, делаем резервную копию сайта. Как это сделать читаем тут. Страница для тэгов WordPressВ создании страницы идем практическим путем. Для шаблона страницы берем файл вашего шаблона, выводящий страницы (page) сайта. Копируем его и переносим для редактирования в текстовой редактор типа Notepad++. -Ищем в файле функцию, которая выводит контент. Скорее всего это будет функция: -Вместо неё вписываем стандартную функцию WP для вывода облака меток: -Например, укажем такой аргумент: , где 2000 это количество меток. -Сохраняем файл под именем [tag.php]. Если такой файл уже есть, даем ему другое имя; -Заливаем этот файл в каталог рабочего шаблона. -В шаблоне появится название нового файла, что мы и видим на странице «Редактор» в консоли сайта. Второй способ создать страницу метокЕсли шаблон сайта сложный, то могут возникнуть сложности с использованием шаблонного файла для страницы. В этом случае идем вторым путем.
В начале файла задаем его название: The template name: Tag. Получаем в консоли название «Шаблон метки». Если ничего не писать, получим просто файл: tag.php .
ПримечаниеВ файле, который я привел для примера функция [wp_tag_cloud] указана с атрибутами:
Создаем страницу с облаком всех меток сайтаСтраница для тэгов WordPress создана. После создания файла страницы для вывода облака меток, остается эту страницу создать. Как добавить категории и теги страницам в WordPress с помощью плагинов и хаковКак вы знаете, в системе Вордпресс существует 2 основные сущности: заметки (посты) и страницы сайта. Первая, как правило, используется при создании записей блога, вторая — для отображения статичной информации (контакты, об авторе и др.). Учитывая эти особенности, меню админки WP реализовано таким образом, что функции категорий и тегов в страницах WordPress полностью отсутствуют. Сегодня разберемся как исправить текущую ситуацию — есть парочка модулей по теме либо можно все реализовать через сниппеты. Если подумать, то решение разработчиков CMS вполне логичное — данная фишка естественным образом смотрится только в записях блогов, а в остальных случаях, вроде как, и не требуется. Однако по работе возникают разные ситуации, в том числе и необходимость указывать теги и категории для страниц WordPress. Они могут пригодиться:
Плагины для задания категорий и тегов страницамНачнем с модулей, наиболее простого варианта. Важно понимать, что все эти решения просто активируют возможность присвоения всем публикациям определенных меток и разделов, они не выводят никакую информацию на самом сайте. Вам нужно будет дополнительно править шаблон и добавлять функции как и при оформлении записей в WordPress: В большинстве случаев код вставляется в page.php (или другой подходящий файл). Post Tags and Categories for PagesС этим модулем я знаком уже давно. Он обновлялся 10 месяцев назад и пропустил несколько последних знаковых релизов, тем не менее, при тестировании все было отлично. Не удивительно, что Post Tags and Categories for Pages имеет более 30тысяч скачиваний и почти максимальную оценку. Процесс установки прост — находите плагин по названию среди других и активируете, настроек никаких нет. Сразу после этого в меню админки для раздела страниц появится 2 новых дополнительных пункта. Работать с ними можно точно также, как с записями. На скриншоте видите, что расширение совместимо и с некоторыми другими, например, с Simple Tags. Также я успешно тестировал вывод тегов страниц в WordPress через the_tags в шаблоне и аналогичную фишку для категорий — the_category. Единственный возможный минус — в своих «личных записях» нашел пометку о том, что данное решение глючит с исключениями (не могу вспомнить, что это значит): то ли речь идет о параметре exclude в WP функциях, то ли о плагинах похожих постов и Exclude categories … Как выход из ситуации, предлагается добавить метки, а после отключить модуль. Вдруг, информация кому-то пригодится. Tag PagesВ отличии от предыдущего решения это позволяет работать исключительно с WordPress тегами. Если вам нужна только такая фишка, то есть смысл ставить плагин без поддержки категорий. Из плюсов: однозначно актуальность (обновка около месяца назад) + 20тысяч загрузок и хорошая оценка.
Add Category to PagesУ модуля меньше всего загрузок — 10тысяч, но при этом максимальная оценка. Не смотря на название, он позволяет работать не только с категориями страниц WordPress но и тегами. Вы сможете просматривать архивы со списками публикаций по определенной теме. Единственное, что смущает — последний апдейт был 3 года назад. Хотя, по сути, применяемые здесь WP функции, за это время не изменились. Хаки добавления тегов / категорий в страницыВ сети имеется несколько нужных нам сниппетов, в которых суть плюс-минус одинаковая, поэтому я выберу лишь один найден здесь (самый детальный). Хак следует разместить в файле function.php вручную либо используйте плагин Code Snippets. Весь код состоит из двух частей. Сначала реализуем отображение блоков меток и категорий для страниц WordPress внутри админки: Если вам надо активировать какую-то одну сущность — удалите лишнюю строчку, оставив только вариант с post_tag или category. Вторая часть сниппета: if ( ! is_admin() ) < add_action( 'pre_get_posts', 'tag_cat_archives' ); >function tag_cat_archives( $wp_query ) < $my_taxonomies_array = array('post','page'); if ( $wp_query->get( ‘category_name’ ) || $wp_query->get( ‘cat’ ) ) $wp_query->set( ‘post_type’, $my_taxonomies_array ); if ( $wp_query->get( ‘tag’ ) ) $wp_query->set( ‘post_type’, $my_taxonomies_array ); > Данный код нужен дабы система WordPress смогла выводить архивные списки рубрик/меток. Вы модифицируете запрос Wp_Query + используете хук pre_get_posts. При этом действия происходят только во фронтенде, т.к. мы указали условие !is_admin(). Еще в одном случае мне встречалась конструкция, где вместо задания сущностей ‘post‘,’page‘ для Wp_Query был параметр ‘any‘ (любые): if ($wp_query->get(‘tag’)) $wp_query->set(‘post_type’, ‘any’); Прием подойдет, когда у вас на сайте имеются и другие форматы объектов, которые хотелось бы выводить в архивах. В целом, как видите, внедрить категории и теги в страницы WordPress сайте не так и сложно. Выбирайте один из двух вариантов реализации: плагины проще, а хаки занимают меньше места. Если есть что дополнить по статье, пишите ниже. Извращения с темами WordPress для новичков и не только (Часть 2) — query_postsСпасибо тов. curlybrace за то, что открыл глаза на существующие правила и нормативы в постинге на Хабре. Будем вникать, а пока что вторая часть статьи о WordPress и темах. Query PostsСписок последних записейКак видно из кода мы передали в функцию query_posts параметр showposts равный 5. Даже не будучи особым знатоком английского языка, понятно что будут показаны 5 постов. Сортируются они по умолчанию по дате публикации — от последних к первым. the_permalink() — даёт нам ссылку на пост, а the_title() — заголовок. N-постов из определенной рубрикиВсё проще простого — всего 6 знаков, а какой эффект, какой размах:-) Думаю тут пояснения не требуются, поэтому перейдём к Исключаем записи из выводаРасширяем кругозор или список доступных параметровДумаю вы оценили прелесть этой небольшой, но мощной функции query_posts, и хотя вы всегда можете более глубоко изучить её в кодексе, я позволю себе перечислить параметры, которые могут вам пригодиться: |