@starkingdom

Как сделать ajax фильтрацию по произвольному полю флажок?

Пытаюсь для себя сделать ajax фильтрацию по произвольному полю флажок. Решил сначала сделать по рубрикам:
<!-- Выводим все рубрики и все записи -->

<div class="category-filter">
    <ul>
        <li><a href="#" data-cat="0">Все записи</a></li>
        <?php
        $categories = get_categories(array(
            'hide_empty' => 0,
        ));
        foreach ($categories as $category) {
            echo '<li><a href="#" data-cat="' . $category->term_id . '">' . $category->name . '</a></li>';
        }
        ?>
    </ul>
</div>

<div id="post-container">
    <?php
    $args = array(
        'post_type' => 'post',
        'posts_per_page' => -1,
    );

    $query = new WP_Query($args);

    if ($query->have_posts()) :
        while ($query->have_posts()) : $query->the_post(); ?>
            <?php the_title(); ?>
        <?php endwhile;
        wp_reset_postdata();
    else :
        echo '<p>Записи не найдены.</p>';
    endif;
    ?>
</div>

<!-- в function добавляем данный код -->

function enqueue_ajax_filter() {
    wp_enqueue_script('ajax-filter', get_stylesheet_directory_uri() . '/assets/js/ajax-filter.js', array('jquery'), '1.0', true);
    wp_localize_script('ajax-filter', 'myAjax', array(
        'url' => admin_url('admin-ajax.php'),
        'nonce' => wp_create_nonce('filter_nonce')
    ));
}
add_action('wp_enqueue_scripts', 'enqueue_ajax_filter');

function filter_posts_by_category() {
    check_ajax_referer('filter_nonce', 'nonce');

    $cat_id = isset($_POST['cat_id']) ? intval($_POST['cat_id']) : 0;

    $args = array(
        'post_type' => 'post',
        'posts_per_page' => -1,
    );

    if ($cat_id > 0) {
        $args['cat'] = $cat_id;
    }

    $query = new WP_Query($args);

    if ($query->have_posts()) :
        while ($query->have_posts()) : $query->the_post();
            // Вывести шаблон поста (например, content.php)
           the_title();
        endwhile;
        wp_reset_postdata();
    else :
        echo '<p>Записи не найдены.</p>';
    endif;

    wp_die();
}
add_action('wp_ajax_filter_posts_by_category', 'filter_posts_by_category');
add_action('wp_ajax_nopriv_filter_posts_by_category', 'filter_posts_by_category');

<!-- создаём файл ajax-filter.js -->

jQuery(document).ready(function($) {
    $('.category-filter a').on('click', function(e) {
        e.preventDefault();
        var cat_id = $(this).data('cat');
        $.ajax({
            url: myAjax.url,
            type: 'POST',
            data: {
                action: 'filter_posts_by_category',
                cat_id: cat_id,
                nonce: myAjax.nonce
            },
            success: function(response) {
                $('#post-container').html(response);
            },
            error: function(error) {
                console.log(error);
            }
        });
    });
});

А теперь пытаюсь этот код адаптировать под страницы с определенным шаблоном. Вопрос такой, как мне вывести на другой странице все поля флажков, а потом по этим флажкам фильтровать уже страницы с определённым шаблоном?
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы