@AeRB

Как сделать с фильтр через чекбоксы на Вордпресс?

Здравствуйте, путем проб и ошибок у меня получилось сделать какой-никакой фильтр постов Вордпресс по меткам. Все норм, но осталась мелочь. Нужно сделать выбор тегов через checkbox, а не через селектор, как это стоит сейчас. Вся проблема заключается в том, что в связи с тем что я не очень знаю PHP, я не могу правильно все сделать. А именно, когда я делаю через checkbox, у меня отображаются все записи у которых есть теги. Пробовал через параметр slug, но что он есть, что нету - без разницы. Итого: нужно сделать так что бы можно было выбирать несколько параметров в фильтре. Это обычный фильтр, но вот не получается у меня. Скорее всего, решение очень близко)
function.php
function posts_filters(){
 $args = array(
  'orderby' => 'date',
  'order' => $_POST['date']
 );

 if( isset( $_POST['categoryfilter'] ) )
  $args['tax_query'] = array(
  array(
   'taxonomy' => 'post_tag',
   'slag' => 'okna',
   'field' => 'id',
   'terms' => $_POST['categoryfilter']
  )
 );

	if( isset( $_POST['check'] ) && $_POST['check'] == 'on' )
		$args['tax_query'] = array(
  array(
   'taxonomy' => 'post_tag',
   'slag' => 'okna',
   'field' => 'id',
   'terms' => $_POST['check']
  )
 );

 $query = new WP_Query( $args );

 if( $query->have_posts() ) :
  echo '<div class="row">
                <div class="col">
                    <div class="allLogoBrands">';
  while( $query->have_posts() ): $query->the_post();
    echo '<div><a href="' . get_permalink( $query->post->ID ) . '">' . the_post_thumbnail() . '</a></li>';
  endwhile;
  echo '</div>
          
                    </div>
                </div>
            </div>';
 wp_reset_postdata();
 else :
   echo 'Записей не найдено';
 endif;

 die();
}
add_action('wp_ajax_customfilter', 'posts_filters');
add_action('wp_ajax_nopriv_customfilter', 'posts_filters');

page.php
<form action="<?php echo site_url() ?>/wp-admin/admin-ajax.php" method="POST" id="post-date-filter">
                            <?php
                                if( $terms = get_terms( 'post_tag', 'orderby=name' ) ) :
                                  echo '<select name="categoryfilter"><option>Выберите категорию...</option>';
                                  foreach ( $terms as $term ) :
                                    echo '<option value="' . $term->term_id . '">' . $term->name . '</option>';
                                  endforeach;
                                  echo '</select>';
                                endif;
                                ?>
                            <label><input type="checkbox" name="check" /> Okna</label>


                            <button>Применить фильтр</button>
                            <input type="hidden" name="action" value="customfilter">
                            </form>
                            <div id="filtering-results"></div>

jQuery(function($){
                             $('#post-date-filter').submit(function(){
                              var filter = $('#post-date-filter');
                              $.ajax({
                               url:filter.attr('action'),
                               data:filter.serialize(), // данные формы
                               type:filter.attr('method'), // POST
                               beforeSend:function(xhr){ filter.find('button').text('Применяем фильтр...'); },
                               success:function(data){ filter.find('button').text('Применить фильтр'); $('#filtering-results').html(data); }
                              });
                              return false;
                             });
                            });


Часть кода брал от сюда CODE
Пару скринов самой страницы
5e28ec721774e259215515.png
5e28ec77508b8290616977.png
5e28ec7c3850a691460358.png
  • Вопрос задан
  • 606 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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