Для создания фильтра постов по категориям в WordPress, вам понадобится выполнить несколько шагов:
Шаг 1: Создание формы фильтра
Создайте форму фильтра, которая будет содержать список доступных категорий, и кнопку "Применить фильтр". Форма может быть создана с использованием тега <form>
и элементов <select>
и <option>
HTML.
Пример:
<form method="get"> <label for="category-filter">Категория:</label> <select name="category" id="category-filter"> <option value="">Все</option> <?php $categories = get_categories(); foreach ($categories as $category) { echo '<option value="' . $category->slug . '">' . $category->name . '</option>'; } ?> </select> <button type="submit">Применить фильтр</button> </form>
Шаг 2: Обработка данных формы
После отправки формы, вы должны обработать данные и изменить основной запрос WordPress для отображения только постов из выбранной категории.
Пример:
function customize_category_filter($query) { if (!is_admin() && $query->is_main_query() && $query->is_home()) { $category = $_GET['category']; if (!empty($category)) { $query->set('category_name', $category); } } } add_action('pre_get_posts', 'customize_category_filter');
Шаг 3: Отобразить результаты
Наконец, вы должны отобразить отфильтрованные результаты с использованием шаблона вашей темы WordPress. Обычно это делается с помощью цикла while
в файле index.php
или archive.php
.
<?php if (have_posts()) : ?> <ul> <?php while (have_posts()) : the_post(); ?> <li> <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <div class="entry-content"> <?php the_excerpt(); ?> </div> </li> <?php endwhile; ?> </ul> <?php else : ?> <p>Нет постов, удовлетворяющих выбранным критериям.</p> <?php endif; ?>
Это полное руководство о том, как создать фильтр постов по категориям в WordPress. Вы можете настроить форму фильтра и код обработки данных, чтобы соответствовать вашим потребностям.