Skip to content

Все для WordPress, веб-розробки — і не тільки

🔗 Пов'язані записи в Elementor через кастомний фільтр запитів

🔗 Пов'язані записи в 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 живе в офіційному репозиторії 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 у налаштуваннях віджета Posts Elementor Pro

Параметр 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 */
7add_action( 'elementor/query/related_posts_by_tax', 'sdstudio_related_posts' );
8function 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, додайте фрагмент, і переконайтеся, що метод працює саме так, як потрібно вам.