Вопрос или проблема
У меня есть пользовательский тип записи (CPT) под названием “События”, и я хочу добавить цикл запросов на главной странице, который отображает предстоящие события, в которых могут захотеть участвовать посетители моего сайта. В настройках “Тип записи” для цикла запросов я увидел только два варианта: “Запись” и “Страница”. Однако я слышал, что цикл запросов может использоваться и с CPT, а также видел видео на YouTube, показывающее цикл запросов с вариантами CPT (скриншот ниже).
Сама видео не охватывает, как применить CPT в цикле запросов, поэтому я попытался найти некоторые учебные материалы в Google. Я нашел эту статью, которая, возможно, содержит решение, которое мне нужно; дело в том, что она требует NodeJS, с которым я не знаком.
Поэтому я задаюсь вопросом, существует ли какое-либо альтернативное решение для этого. Возможно, PHP-код, который не требует NodeJS? Или какой-то плагин, который я могу установить? Заранее спасибо!
В выпадающем списке типов записи в блоке Цикл запросов данные заполняются из конечной точки REST API:
/wp-json/wp/v2/types
поэтому мы должны убедиться, что публичный пользовательский тип записи зарегистрирован с show_in_rest
как true
, чтобы он был включен в эти данные.
Ответ или решение
Для решения задачи отображения предстоящих событий с помощью Query Loop для вашего пользовательского типа записи (CPT) под названием "События" на главной странице, необходимо предпринять несколько шагов. Ниже приведены рекомендации, которые помогут вам осуществить это без необходимости использования NodeJS или установки дополнительных сложных плагинов.
1. Регистрация пользовательского типа записи (CPT)
Убедитесь, что ваш CPT "События" зарегистрирован с параметрами, позволяющими использовать его в REST API. Важно, чтобы параметры были следующими:
function create_custom_post_type() {
register_post_type('events', array(
'labels' => array(
'name' => __('События'),
'singular_name' => __('Событие')
),
'public' => true,
'show_in_rest' => true, // Это должно быть true, чтобы CPT был доступен в REST API
'has_archive' => true,
'supports' => array('title', 'editor', 'thumbnail', 'custom-fields'),
));
}
add_action('init', 'create_custom_post_type');
Таким образом, у вас будет доступ к CPT через REST API, и это позволит выбрать его в настройках блока Query Loop.
2. Использование блока Query Loop
Теперь, когда ваш CPT корректно зарегистрирован, выполните следующие шаги, чтобы добавить Query Loop на главную страницу:
- Добавьте новый блок: В редакторе ваших страниц выберите "Добавить блок" и найдите блок Query Loop.
- Настройка Post Type: При настройке блока в выпадающем списке "Post Type" теперь должны быть доступны как "Посты", так и "События". Выберите "События".
- Настройка вывода: Настройте параметры отображения, такие как количество выводимых записей, порядок сортировки (например, по дате), и стиль разметки в соответствии с вашими предпочтениями.
3. Добавление фильтров для предстоящих событий
Чтобы отображать только предстоящие события, необходимо применить дополнительные параметры фильтрации. Это можно сделать с помощью встроенного функционала Gutenberg, если таковой имеется, или программно. Например:
function filter_events_query($query) {
// Проверяем, что запрос относится к CPT events
if (is_post_type_archive('events') && $query->is_main_query()) {
$today = date('Y-m-d'); // Получаем текущую дату
$query->set('meta_query', array(
array(
'key' => 'event_date', // Метаполе с датой события
'value' => $today,
'compare' => '>=' // Отображаем только предстоящие события
)
));
}
}
add_action('pre_get_posts', 'filter_events_query');
4. Альтернативный подход: Плагины
Если вам не хочется использовать код, существуют плагины, которые могут упростить этот процесс. Например, плагины для настройки блоков или для улучшения работы с пользовательскими типами записей, такие как Custom Post Type UI или Advanced Custom Fields, могут предложить интуитивно понятные интерфейсы для настройки и отображения CPT.
Заключение
Следуя указанным выше шагам, вы сможете организовать отображение предстоящих событий на главной странице вашего сайта без необходимости глубокого изучения NodeJS или сложных плагинов. Вам необходимо только убедиться в правильной регистрации вашего пользовательского типа записи и использовании блока Query Loop с необходимыми фильтрами. Это обеспечит лучшее взаимодействие пользователя с вашим контентом и повысит конверсию за счет упрощенного доступа к важной информации о мероприятиях.