Intereting Posts
Как создать простую страницу архива в сообщениях и добавить URL-адрес Защищенная паролем страница перезагружает форму pw в сафари при представлении Неопределенный индекс: at_nonce в пользовательском почтовом обмене Ограничить the_excerpt с максимальным количеством символов x Что позволяет плагину не удалять? WooCommerce – добавление пользовательских полей для выставления счета Категории продуктов не отображаются в качестве опции для создания меню Как использовать мета-тег канонического URL, чтобы избежать дублирования проблем с домашними страницами WP Перенаправление на первый ребенок в пользовательском типе сообщений (без шаблона) Отображать содержимое нескольких страниц и их потомков Изменение URL-адресов изображений в медиа-библиотеке Проблемы доступности с раскрывающимися меню в 20-ти темы или других Скрыть галерею от the_conent Работа с несколькими значениями и обменными знаками Использовать файл .php в качестве страницы вместо страницы WordPress и файла шаблона?

Поиск по нескольким категориям

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

Мой код выглядит следующим образом:

<form method="get" id="searchform" action="<?php echo home_url(); ?>"> <input type="text" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Search...':this.value;" value="Search..." name="s" id="s" /> <input type="hidden" name="post_type" value="product" /> <?php wp_dropdown_categories('taxonomy=product_cat&id=make&child_of=15&show_option_all=Select Make...'); ?> <?php wp_dropdown_categories('taxonomy=product_cat&id=model&child_of=21&show_option_all=Select Model...'); ?> <input type="submit" id="searchsubmit" value="Search" /> </form> 

Когда я искал, я обнаружил: WordPress Multiple Category Search , который, кажется, делает именно то, что я хочу … однако я не уверен, как включить предложение.

Я уверен, вы добавили следующее в свой файл функций:

 add_action( 'parse_request', 'category_search_logic', 11 ); function category_search_logic( $query ) { if ( ! isset( $query->query_vars[ 'cat' ] ) ) return $query; // split cat query on a space to get IDs separated by '+' in URL $cats = explode( ' ', $query->query_vars[ 'cat' ] ); if ( count( $cats ) > 1 ) { unset( $query->query_vars[ 'cat' ] ); $query->query_vars[ 'category__and' ] = $cats; } return $query; } 

Но как я могу включить это в форму поиска? Я уверен, что это что-то простое, но я потерян … у кого-нибудь есть идеи?

Спасибо, Джош

Solutions Collecting From Web of "Поиск по нескольким категориям"

Я нашел решение …

Теперь моя страница функций выглядит так:

 <?php class dropdown extends Walker_CategoryDropdown { function start_el(&$output, $category, $depth, $args) { $pad = str_repeat('&nbsp;', $depth * 3); $cat_name = apply_filters( 'list_cats', $category->name, $category ); $output .= "\t<option class=\"level-$depth\" value=\"".$category->slug."\""; $output .= '>'; $output .= $pad.$cat_name; if ( $args['show_count'] ) $output .= '&nbsp;&nbsp;('. $category->count .')'; if ( $args['show_last_update'] ) { $format = 'Ym-d'; $output .= '&nbsp;&nbsp;' . gmdate($format, $category->last_update_timestamp); } $output .= "</option>\n"; } } ?> 

Моя форма теперь выглядит так:

 <form method="get" id="searchform" action="<?php echo home_url(); ?>"> <input type="text" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Product Search...':this.value;" value="Product Search..." name="s" id="s" class="left" /> <input type="image" src="<?php bloginfo('template_directory') ?>/images/icosearch.png" id="searchsubmit" value=""/> <?php wp_dropdown_categories( array( 'child_of' => 426, 'class' => 'styled', 'id' => 'make', 'name' => 'make', 'show_option_all' => 'Make...', 'taxonomy' => 'product_cat', 'walker' => new dropdown )) ?> <?php wp_dropdown_categories( array( 'child_of' => 427, 'class' => 'styled', 'id' => 'model', 'name' => 'model', 'show_option_all' => 'Model...', 'taxonomy' => 'product_cat', 'walker' => new dropdown )) ?> </form> 

Моя страница поиска выглядит так:

 <?php $tmp[]=$_GET["model"]; $tmp[]=$_GET["make"]; $product_cat=array(); foreach($tmp as $v) { if($v!="0") $product_cat[]=$v; } if(count($product_cat)>0) { $product_cat="&product_cat=".implode(",",$product_cat); } else { $product_cat=""; } $query=query_posts("s=$text".$product_cat); $count =count($query); if ($count == 0) { echo 'No Results'; } elseif ($count == 1) { echo ''.$count.' Result'; } else { echo ''.$count.' Results'; } ?>