Как сделать фильтр постов по категориям?
Ссылка скопирована
Как сделать фильтр постов по категориям, как на фото?
Фильтр делается не на странице архива, а на обычной странице.
Дополнительно
Ответы:
В общем случае как-то так. Передаете GET или POST параметр с id категории и добавляете к аргументам основного запроса tax_query get_posts(array( 'post_type' => 'post', 'status' => 'publish', 'tax_query' => array( array( 'taxonomy' => 'category', 'field' => 'id', 'terms' => ( isset( $_GET['category_id'] ) && intval($_GET['category_id']) ) ? intval($_GET['category_id']) : $default_cat_id , ) ), ) ); |
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
linkedin
Из-за чего выкидывает из аккаунта LinkedIn?
1 ответ
code-review
Нужен ли код-ревью React/TypeScript проекта?
1 ответ
Telegram
Как добиться, чтобы Telegram прислал мне именно смс код, а не через звонок его диктовал?
1 ответ
Аккумуляторные батареи
Почему при зарядке автостарта слышен писк, где искать причину?
1 ответ


На обычной странице фильтр постов по категориям делается через параметр в URL или AJAX. Самый простой вариант без AJAX: форма отправляет
catметодом GET, аWP_Queryполучает выбранную категорию и строит список записей.Форма:
Если нужен фильтр как на картинке с кнопками, вместо select выводите ссылки с
?cat=ID. Для нескольких категорий используйтеcategory__in. Если страница статическая, не используйтеquery_posts(): он ломает глобальный запрос и пагинацию. Создавайте отдельныйWP_Queryи после цикла вызывайтеwp_reset_postdata().Для AJAX-версии принцип тот же, только выбранный ID категории отправляется в обработчик, а сервер возвращает HTML карточек. Не фильтруйте записи только на фронте, если записей много: вы сначала загрузите лишний контент, а потом спрячете его CSS-ом. Это плохо для скорости. Если нужны красивые URL, можно оставить GET-параметр: он понятен, индексируемость контролируется, а пользователь может скопировать ссылку на уже отфильтрованную подборку.