WordPress запрашивает несколько типов записей / категорий с взвешенными результатами
Для проекта WordPress я ищу лучшее решение этой проблемы:
Запрос должен получить набор различных post_types и таксономий (например, категорий), в зависимости от выбора посетителей сайта. Например, пользователь хочет получить результаты из обычных сообщений, но также из продуктов (из WooCommerce) и других post_types, таких как события и новости (оба отдельных post_types. Сложность в том, что пользователь хочет назначить весовой коэффициент для каждого. если они выбирают как posts = 1, products = 3, news = 4, они должны получить количество постов, в три раза больше товаров и в 4 раза больше новостей.
Следующим шагом будет включение категорий, также с весовым коэффициентом, что сделает его еще более сложным, потому что для постов мне нужно запросить другую таксономию, чем для продуктов.
Единственный способ решить эту проблему - запустить отдельный запрос для каждого типа post_type, например, выбрать 10 элементов из записей, 30 элементов из продуктов и 40 из новостей, чтобы сопоставить весовые коэффициенты, а затем объединить результаты. Но это не очень хорошо масштабируется, когда мне нужно разбить на страницы (например, я хочу показать 50 записей на первой странице, следующие 50 на второй странице).
Я думал о том, чтобы собрать эти отдельные запросы во временную таблицу, но такая таблица будет доступна только для текущего сеанса, поэтому она не поможет с разбиением на страницы (так как временная таблица больше не будет существовать, когда отображается вторая страница).).
У кого-нибудь есть идея, как я могу подойти к этой задаче? Я хотел бы сделать это в соответствии со стандартами кодирования WordPress, поэтому я хотел бы использовать WP_Query и предоставленные фильтры, поскольку сайт также использует геолокацию и WPML для перевода, поэтому я действительно хотел бы избежать написания низкоуровневого запроса, где я приходится включать все это вручную.
Я не ищу окончательного решения, просто хочу собрать некоторые идеи.