
🔗 Связанные записи в Elementor через кастомный фильтр запросов
Штатный виджет «Посты» в Elementor Pro умеет три вещи: последние записи, по категории и ручной список. Но когда под статьёй нужен блок «Похожие записи», совпадающие по тегам и рубрикам с текущей, ни одной встроенной опции нет. Да, в выпадающем списке Source есть пункт «Related» с версии 2.5, но логика примитивная: посты из тех же категорий без учёта веса совпадений. Результат предсказуем, блок выглядит как случайная подборка, а не как осмысленная рекомендация.
Задача: сохранить дизайн карточек Elementor, но отдать запрос стороннему плагину, который считает релевантность по всем привязанным таксономиям одновременно. На выходе, блок «Похожие записи», в котором каждый следующий пост действительно ближе к тому, что читатель смотрит сейчас, а не просто наполняет сетку.
Метод работает на чистом PHP, без лишних аддонов и без правки шаблонов. Elementor рисует карточку, плагин Related Posts By Taxonomy вычисляет ID, а хук elementor/query/{$query_id} скрещивает одно с другим. 10 минут настройки, и блок живёт.
💡 Быстрый обзор:
- Устанавливаете бесплатный плагин
Related Posts By Taxonomy: он ищет связанные записи по общим категориям, тегам и пользовательским таксономиям, без нагрузки на фронтенд. - В виджете Posts Elementor Pro задаёте уникальный Query ID, эта строка превратится в имя хука для перехвата
WP_Query. - Добавляете PHP-фрагмент на сайт: функция получает массив ID от плагина и передаёт его в запрос Elementor через
post__in. - Донастраиваете количество, сортировку, шаблон вывода и кеширование через фильтры плагина под свою задачу.
Related Posts By Taxonomy: что под капотом
Плагин Related Posts By Taxonomy живёт в официальном репозитории WordPress.org с 2014 года. На июнь 2026, версия 2.7.9, протестирована вплоть до WordPress 7.0, 10 000+ активных установок. Автор, Kees Meijer, поддерживает плагин стабильно: последний релиз вышел за несколько дней до этой публикации.
Главная фишка, минимальный footprint. Никакой админ-панели в консоли, никаких лишних скриптов на фронтенд, никакой писанины в базу. Вся настройка, через фильтры и атрибуты шорткода. Для разработчика это плюс: чистая установка, предсказуемое поведение, ноль мусора.
Алгоритм ранжирует посты по количеству общих терминов таксономий. Пост, набравший больше всего совпадений по категориям и тегам с текущей статьёй, получает высший приоритет. Плагин работает не только со стандартными рубриками и метками, подхватывает пользовательские таксономии, зарегистрированные через WooCommerce, ACF или CPT UI. А раз дружит с произвольными типами записей, блок «Похожие записи» выводится и на страницах портфолио, и в кастомных разделах.
Настройка виджета Posts в Elementor
Добавьте на страницу Single Post Template виджет Posts из библиотеки Elementor Pro. Настройте скин, Cards или Classic, и добейтесь нужного дизайна: обложка, заголовок, дата, excerpt. На этом этапе виджет показывает последние записи блога, и это нормально.
Теперь ключевой шаг. В боковой панели редактирования откройте вкладку Query. Найдите поле Query ID и впишите уникальный идентификатор, например related_posts_by_tax. Именно эта строка превратится в имя хука elementor/query/related_posts_by_tax, через который мы перехватим запрос.

Параметр Query ID появился в Elementor Pro начиная с версии 2.0. Он спроектирован специально для разработчиков: вы задаёте строку-идентификатор, а затем вешаете на хук elementor/query/{ваш_id} свою callback-функцию. Подробная документация, на портале разработчиков Elementor.
Остальные настройки Query, Post Type, Taxonomies, Order By, оставьте как есть. Они продолжают применяться, а наш фильтр добавляется поверх. Например, если в виджете выбран Post Type «Posts», плагин Related Posts By Taxonomy будет искать связанные записи только среди постов блога.
PHP-фрагмент: соединяем два плагина
Код состоит из одного вызова add_action и короткой функции. Она дёргает метод km_rpbt_get_related_posts() из плагина, получает массив ID релевантных постов и передаёт его в WP_Query через параметр post__in.
Добавьте фрагмент в functions.php дочерней темы или через плагин Code Snippets:
1 /** 2 * Подменяет запрос виджета Posts Elementor на связанные записи. 3 * Использует плагин Related Posts By Taxonomy. 4 * 5 * @param \WP_Query $query Объект запроса Elementor. 6 */ 7 add_action( 'elementor/query/related_posts_by_tax', 'sdstudio_related_posts' ); 8 function sdstudio_related_posts( $query ) { 9 global $post; 10 11 $related_ids = km_rpbt_get_related_posts( 12 $post->ID, 13 array( 'fields' => 'ids' ) 14 ); 15 16 if ( ! empty( $related_ids ) ) { 17 $query->set( 'post__in', $related_ids ); 18 $query->set( 'orderby', 'post__in' ); 19 } 20 }
Разбор построчно:
elementor/query/related_posts_by_tax, хук, имя которого совпадает с Query ID в виджете. Если вы указали другой ID, замените строку.global $postдаёт доступ к текущему посту, от которого пляшем.km_rpbt_get_related_posts(), функция плагина, возвращает массив ID связанных записей. Параметр'fields' => 'ids'ускоряет запрос: плагин не тянет полные объекты.$query->set( 'post__in', $related_ids )жёстко ограничиваетWP_Queryтолько найденными постами.$query->set( 'orderby', 'post__in' )сохраняет порядок, который вернул плагин, от наиболее релевантного к наименее.
Формально выполняются два запроса: сначала плагин ищет ID, затем Elementor собирает по ним полные объекты. На практике при 3-5 связанных записях нагрузка незаметна. Для максимальной производительности включите в плагине опцию persistent cache, она кеширует результаты на заданное время.
Тонкая настройка вывода
Фрагмент выше, базовая версия. Дальше запрос кастомизируется под конкретную задачу.
Ограничение количества. По умолчанию плагин возвращает до 5 постов. Чтобы изменить лимит, передайте параметр posts_per_page:
1 $related_ids = km_rpbt_get_related_posts( 2 $post->ID, 3 array( 4 'fields' => 'ids', 5 'posts_per_page' => 3, 6 ) 7 );
Исключение текущего поста. Плагин делает это автоматически, но если перестраховываетесь, добавьте $query->set( 'post__not_in', array( $post->ID ) ).
Ограничение по дате. Показывать только посты за последние 12 месяцев:
1 $related_ids = km_rpbt_get_related_posts( 2 $post->ID, 3 array( 4 'fields' => 'ids', 5 'limit_month' => 12, 6 ) 7 );
Смена шаблона вывода. Плагин поддерживает кастомные HTML-шаблоны через фильтр rpbt_template. Положите файл related-posts-by-taxonomy.php в папку темы, и вёрстка полностью ваша. Документация с примерами лежит на сайте автора, для бесплатного плагина она впечатляюще подробная.
Режим Ajax. Если блок связанных записей находится глубоко под сгибом экрана, включите ленивую загрузку через фильтр rpbt_ajax_load, плагин подтянет посты асинхронно, не влияя на First Contentful Paint.
Видео от команды Elementor показывает продвинутое управление запросами в действии, включая подбор связанных записей и фильтрацию по дате:
⁉️🤔 Частые вопросы
Нужен ли Elementor Pro для этого метода?
Да, кастомный фильтр запросов
elementor/query/{$query_id}доступен только в Elementor Pro. В бесплатной версии нет виджета Posts с полем Query ID.
Что делать, если плагин не находит связанных записей?
Проверьте, что у постов есть общие таксономии. Плагин ищет совпадения по всем публичным таксономиям, привязанным к типу записи. Если посты разбросаны по непересекающимся категориям, связанных записей не будет. Задайте fallback: например, покажите последние записи из той же рубрики.
Можно ли использовать подход для произвольных типов записей?
Да. Укажите нужный Post Type в настройках Query виджета Elementor, плагин
Related Posts By Taxonomyавтоматически подхватит таксономии, зарегистрированные для этого типа. Метод работает с портфолио, товарами WooCommerce и любыми CPT.
Работает ли метод с блочной темой (Full Site Editing)?
Виджет Posts Elementor Pro не зависит от темы, он работает и в классических, и в блочных темах. Главное, чтобы шаблон Single Post управлялся через Theme Builder Elementor.
Чем этот метод лучше встроенной опции «Related» в Elementor?
Встроенная опция просто фильтрует посты по тем же категориям, без учёта количества совпадений и без поддержки пользовательских таксономий.
Related Posts By Taxonomyранжирует посты по всем привязанным таксономиям одновременно и отдаёт наиболее релевантные, а не просто «из той же рубрики».
Стоит ли заморачиваться с ручным фильтром
На небольших блогах с десятком рубрик встроенной опции «Related» в Elementor Pro хватит за глаза. Но как только появляются пользовательские таксономии, несколько типов записей или потребность точно настроить логику подбора, ручной фильтр через elementor/query/{$query_id} становится единственным чистым решением. Без покупки дополнительных аддонов.
Плагин Related Posts By Taxonomy закрывает задачу за ноль долларов и не добавляет лишнего кода на фронтенд. Настройка занимает 10 минут, а результат, релевантный блок «Похожие записи», который удерживает посетителя на сайте дольше, чем случайная подборка последних публикаций.
Попробуйте на тестовом окружении: поднимите локальный WordPress, поставьте плагин и Elementor Pro, добавьте фрагмент, и убедитесь, что метод работает именно так, как нужно вам.



