@luxurypluxury

Как правильно сделать фильтрацию постов?

У меня есть страница со всеми услугами и она разбита на категории, тоесть как сделать чтобы определённые посты выводились в соответствующем его категории блоке.

Ещё у меня сделана фильтрация по кнопкам на js, а ещё администратор сайта должен сам добавлять категории и они соответственно должны появлятся в кнопках фильтрации и плюс на странице.

Вывожу я всю информацию через ACF поста:
<?php
                $my_posts = get_posts(
                    array(
                        'numberposts' => -1,
                        'category_name' => 'services',
                        'orderby' => 'date',
                        'order' => 'DESC',
                        'include' => array(),
                        'exclude' => array(),
                        'meta_key' => '',
                        'meta_value' => '',
                        'post_type' => 'post',
                        'suppress_filters' => true
                    )
                );

                global $post;

                foreach ($my_posts as $post) {
                    setup_postdata($post);
                    ?>
                    <li>
                        <a href="<?php the_permalink($post); ?>" class="services__list__item">
                            <div class="services__list__item__image">
                                <img src="<?php the_field('service_image'); ?>" alt="<?php the_field('service_alt'); ?>">
                            </div>
                            <div class="services__list__item__main">
                                <h3>
                                    <?php the_field('service_title'); ?>
                                </h3>
                                <p class="services__list__item__price">Від
                                    <?php the_field('service_price'); ?> грн
                                </p>
                                <ul>
                                    <?php if (get_field('service_repeater')): ?>
                                        <?php while (has_sub_field('service_repeater')): ?>
                                            <li>
                                                <p>
                                                    <?php the_sub_field('service_repeater_item'); ?>
                                                </p>
                                            </li>
                                        <?php endwhile; ?>
                                    <?php endif; ?>
                                </ul>
                                <p class="services__list__item__main__details">
                                    Детальніше
                                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none"
                                        xmlns="http://www.w3.org/2000/svg">
                                        <g id="_keyboard_arrow_right">
                                            <path id="Vector"
                                                d="M8.29492 16.59L12.8749 12L8.29492 7.41L9.70492 6L15.7049 12L9.70492 18L8.29492 16.59Z"
                                                fill="#676767" />
                                        </g>
                                    </svg>
                                </p>
                            </div>
                        </a>
                    </li>
                    <?php
                }
                wp_reset_postdata();
                ?>


А ещё такой вопрос можно ли как-то эти категории в отдельном месте создавать и потом выбирать допустим через селект acf при создании поста чтобы выбирать его категорию или же каким-то другим способом?
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ответы на вопрос 2
@pantsarny
Если с подгрузкой данных с сервера - через стандартный запрос постов + термса
Аналогично можно сделать через рест апи

Но легче сделать фильтр на лету
Если не можете найти готовое решение (это странно)
То реализуйте логику на js:
Выводите список категорий сверху, включая элемент все. У этих элементов должны быть идентификаторы, например data-id=5
В цикле вывода постов к элементам поста добавляете идентификаторы категорий данного поста, например data-category=‘3,5,7’
Пишите обработчик на кнопки категорий сверху, который будет показывать посты с совпадающим идентификатором (display:block) и скрывать с несовпадающим (display:none)
Ответ написан
Комментировать
@UthvfyV
ничего создавать и выводить не надо. Уже всё выведено и создано. Для того и сделан wordpress чтоб такое реализовывать. Создали в админке категорию. Потом создали запись предназначенную для этой категории. При создании записи прикручиваете её к созданной категории. Справа есть поле, выберите категорию. Всё. Допустим у вас есть несколько записей привязанных к этой категории. Открываете в админке в боковом меню "Внешний вид" - "Меню", создаёте меню, добавляете в него вашу категорию. На странице сайта нажимаете в меню эту категорию, и у вас открывается список всех записей привязанных к этой категории. Что не так? Или я чего-то не понял? "можно ли как-то эти категории в отдельном месте создавать". Для этого существует в боковом меню, в админке, "Записи" - "Рубрики". Вот вам место для создания категорий. "потом выбирать допустим через селект acf при создании поста чтобы выбирать его категорию или же каким-то другим способом?" Повторюсь. При создании записи справа есть поле "Выберите категорию", чтобы выбрать категорию для этой записи. Что не так? "Вывожу я всю информацию через ACF поста:". Зачем? Типа, не мала баба клопоту та й купыла порося. Или я чего то недопонял?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы