Intereting Posts
Как получить пересечение двух терминов как из разных пользовательских таксономий Shortcode в всплывающем окне AJAX Пользовательская регистрация username_exists / email_exists Как динамически прикреплять изображения к карусели Выпадающий фильтр не извлекает пользовательские таксономии Отключить перенаправление на страницу продукта на странице результатов поиска в WooCommerce Петля со слайдером (слайдер не загружается) В какой функции WordPress API отображаются активные / неактивные плагины? Пользовательский массив запросов SQL-запросов к WHERE p.id Как обеспечить доступ к определенному плагину ко всем ролям пользователя, кроме подписчика в wordpress Как проверить фильтруемые $ vars? Получить сообщение в соответствии с текущей таксономией Как создать страницу «последние новости», в которой отображается список сообщений из категории блога Можно ли обрабатывать $ _POST / входящий HTTP-запрос, чтобы автоматически создать сообщение WordPress? jQuery в верхнем или нижнем колонтитуле

Как отрегулировать код, чтобы обновить раскрывающийся список с тегами, которые активны в отфильтрованном списке категорий

У меня есть несколько настраиваемых тэгов (ptags) и пользовательские posttypes (продукты), и я сделал так, чтобы я мог фильтровать сообщения несколькими тегами в категории.

В настоящее время код извлекает теги из сообщений, относящихся к активной категории (pcategory). Я имею выпадающие окна от общего к конкретному, например: <BRAND> <TYPE> <SIZE>

Когда посетитель выбирает параметр, информация отправляется на текущую страницу (страница категории, на которой пользователь включен) и фильтрует сообщения в этом теге.

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

Если я выбираю бренд «А», а страница обновляется, я не хочу показывать размеры, которые не относятся к какому-либо из сообщений.

Надеюсь, вы понимаете, что я пытаюсь сказать. Возможно, это можно решить, используя AJAX или настроить SQL-запрос?

Мой код шаблона выглядит так:

 <form action="" method="get"><div> <?php $current_term1 = $wp_query->get_queried_object(); $args = array( 'categories' => $current_term1->term_id, 'taxonomy' => "brand" ); $outputbrand = get_category_tags_test($args); $outputbrand = preg_replace("#<select([^>]*)>#", "<select$1 onchange='return this.form.submit()'>", $outputbrand); echo $outputbrand;?> <?php $args = array( 'categories' => $current_term1->term_id, 'taxonomy' => "type" ); $outputtype = get_category_tags_test($args); $outputtype = preg_replace("#<select([^>]*)>#", "<select$1 onchange='return this.form.submit()'>", $outputtype); echo $outputtype;?> <input type="submit" value="Filter" /> </div></form> 

Мой код functions.php выглядит так:

 //begin test function get_category_tags_test($args) { global $wpdb; $tags = $wpdb->get_results (" SELECT DISTINCT terms2.term_id as tag_id, terms2.name as tag_name, null as tag_link, terms2.slug as tag_slug FROM wp_posts as p1 LEFT JOIN wp_term_relationships as r1 ON p1.ID = r1.object_ID LEFT JOIN wp_term_taxonomy as t1 ON r1.term_taxonomy_id = t1.term_taxonomy_id LEFT JOIN wp_terms as terms1 ON t1.term_id = terms1.term_id, wp_posts as p2 LEFT JOIN wp_term_relationships as r2 ON p2.ID = r2.object_ID LEFT JOIN wp_term_taxonomy as t2 ON r2.term_taxonomy_id = t2.term_taxonomy_id LEFT JOIN wp_terms as terms2 ON t2.term_id = terms2.term_id WHERE t1.taxonomy = 'pcategory' AND p1.post_status = 'publish' AND terms1.term_id IN (".$args['categories'].") AND t2.taxonomy = (".$args['taxonomy'].") AND p2.post_status = 'publish' AND p1.ID = p2.ID ORDER by tag_name "); $output1 ="<select name=".$args['taxonomy'].">"; $output1 .='<option value="">'.$args['taxonomy'].'</option>'; foreach ($tags as $tag) { $term_slug=$tag->tag_slug; $term_name =$tag->tag_name; $link = $term_slug; $output1 .="<option value='".$link."'>".$term_name."(".$term->count.")</option>"; } $output1 .="</select>"; return $output1; } //test end 

Если есть плагин, который может это сделать, вы можете также упомянуть его, потому что я ничего не мог найти. 🙂 Благодаря