Intereting Posts
переворачивать горизонтальные изображения навалом использование admin_url () в add_menu_page () «Миниатюры» и «Средний» Размеры изображения отличаются от ожидаемых Пользовательский пароль при регистрации – регистрация электронной почты отправляет автоматически сгенерированный проход Плагин WordPress со своим собственным сайтом / темой WordPress, создающий 404s под тегами блога Как я могу остановить мой блог от ответа? Пользовательский тип архива Плагин для отслеживания задачи и состояния WordPress Ajax не функционирует так, как я ожидаю … что случилось? Измените путь, в который загружаются плагины wordpress Поворот виджетами или блоками контента каждые х сек / мин Как предотвратить повторение одной из двух повторяющихся циклов на второй странице? wp_get_image_editor обрезает получение данных с Javascript и слегка обрезает Выберите «Место проведения» из выпадающего списка и повторно используйте информацию о сохраненных адресах в meta_box

Получить фильтр главной категории, чтобы показать фильтр подкатегории

Я пытаюсь создать фильтр для сообщений, которые сначала должны позволить пользователю выбирать по основным категориям, а затем по подкатегориям, присвоенным каждой из основных категорий. Когда пользователь нажимает на основную категорию выбора, div #reponse должен загружать правильные сообщения через AJAX, а затем показывать дополнительные подкатегории в основных категориях. Когда пользователь нажимает одну или несколько подкатегорий, содержимое div должно снова загружаться в соответствии с выборами.

У меня возникли проблемы с попыткой выяснить, как сделать подкатегории появляться в зависимости от того, какую главную категорию пользователь нажал. Я использовал пример с этого сайта для начальной настройки. Это код до сих пор:

PHP / HTML:

 <form action="<?php echo site_url() ?>/wp-admin/admin-ajax.php" method="POST" id="filter"> <?php if( $terms = get_terms( 'category', 'parent=0&hide_empty=0' ) ) : echo "<div id='maincategories'>"; foreach ( $terms as $term ) : echo '<input type="radio" name="categoryfilter" value="' . $term->term_id . '">' . $term->name; // ID of the category as the value of an option endforeach; echo "</div>"; endif; ?> // This is the part that I want to show depending on the choices above <?php if( $terms = get_terms( 'category', 'hide_empty=0&child_of=10' ) ) : echo "<div id='subcategories'>"; foreach ( $terms as $term ) : echo '<input type="checkbox" name="categoryfilter" value="' . $term->term_id . '">' . $term->name; // ID of the category as the value of an option endforeach; echo "</div>"; endif; ?> <button style="display:none;" id="submit">Apply filter</button> <input type="hidden" name="action" value="myfilter"> , <form action="<?php echo site_url() ?>/wp-admin/admin-ajax.php" method="POST" id="filter"> <?php if( $terms = get_terms( 'category', 'parent=0&hide_empty=0' ) ) : echo "<div id='maincategories'>"; foreach ( $terms as $term ) : echo '<input type="radio" name="categoryfilter" value="' . $term->term_id . '">' . $term->name; // ID of the category as the value of an option endforeach; echo "</div>"; endif; ?> // This is the part that I want to show depending on the choices above <?php if( $terms = get_terms( 'category', 'hide_empty=0&child_of=10' ) ) : echo "<div id='subcategories'>"; foreach ( $terms as $term ) : echo '<input type="checkbox" name="categoryfilter" value="' . $term->term_id . '">' . $term->name; // ID of the category as the value of an option endforeach; echo "</div>"; endif; ?> <button style="display:none;" id="submit">Apply filter</button> <input type="hidden" name="action" value="myfilter"> , <form action="<?php echo site_url() ?>/wp-admin/admin-ajax.php" method="POST" id="filter"> <?php if( $terms = get_terms( 'category', 'parent=0&hide_empty=0' ) ) : echo "<div id='maincategories'>"; foreach ( $terms as $term ) : echo '<input type="radio" name="categoryfilter" value="' . $term->term_id . '">' . $term->name; // ID of the category as the value of an option endforeach; echo "</div>"; endif; ?> // This is the part that I want to show depending on the choices above <?php if( $terms = get_terms( 'category', 'hide_empty=0&child_of=10' ) ) : echo "<div id='subcategories'>"; foreach ( $terms as $term ) : echo '<input type="checkbox" name="categoryfilter" value="' . $term->term_id . '">' . $term->name; // ID of the category as the value of an option endforeach; echo "</div>"; endif; ?> <button style="display:none;" id="submit">Apply filter</button> <input type="hidden" name="action" value="myfilter"> 

До сих пор я только пытался жестко кодировать child_of=10 в цикле, но я хотел бы, чтобы ID был динамическим в зависимости от того, какую главную категорию выбирает пользователь.

JQuery:

 jQuery(function($){ $('#filter').submit(function(){ var filter = $('#filter'); $.ajax({ url:filter.attr('action'), data:filter.serialize(), // form data type:filter.attr('method'), // POST beforeSend:function(xhr){ $("#response").fadeOut(); }, success:function(data){ $('#response').html(data); // insert data $("#response").fadeIn(); } }); return false; }); }); 

functions.php:

 function misha_filter_function(){ $args = array( 'orderby' => 'date', // we will sort posts by date 'order' => $_POST['date'] // ASC или DESC ); // for taxonomies / categories if( isset( $_POST['categoryfilter'] ) ) $args['tax_query'] = array( array( 'hide_empty' => 0, 'taxonomy' => 'category', 'field' => 'id', 'terms' => $_POST['categoryfilter'], ) ); $query = new WP_Query( $args ); if( $query->have_posts() ) : while( $query->have_posts() ): $query->the_post(); echo '<h2>' . $query->post->post_title . '</h2>'; endwhile; wp_reset_postdata(); else : echo 'No posts found'; endif; die(); } add_action('wp_ajax_myfilter', 'misha_filter_function'); add_action('wp_ajax_nopriv_myfilter', 'misha_filter_function'); 

Я хотел бы получить некоторые советы о том, как достичь того, что я пытаюсь сделать. Я не знаю, должна ли эта логика идти в PHP или jQuery. Я думаю, что я мог бы создать несколько скрытых div для каждой основной категории, содержащей подкатегории, а затем показать их в зависимости от того, выбрана ли их основная категория, но я действительно не знаю, как это сделать правильно.

Solutions Collecting From Web of "Получить фильтр главной категории, чтобы показать фильтр подкатегории"