2011-12-16 2 views
2

Я работаю над поиском в wordpress. Я хочу искать текст в нескольких категориях. Вот мой кодПоиск сообщений, основанных на нескольких категориях WordPress

<form method="post" action="<?php bloginfo('home');?>/?ptype=catsearch" > 
    <input type="text" name="searchtext" size="40" /> 
     <h2><?php _e('Categories:'); ?></h2> 
     <select name="category[]" multiple='multiple'> 
      <option value=""><?php echo esc_attr(__('Please Select Your Choice')); ?></option> 
       <?php $categories= get_categories('show_count=0&orderby=name&echo=0&hierarchical=true&depth=1&taxonomy=category&exclude=1'); 
       foreach ($categories as $category) { 
       $option = "<option value=$category->term_id>"; 
       $option .= ucfirst($category->cat_name); 
       $option .= '</option>'; 
       echo $option; 
      } 
      ?> 
     </select> 
    <input type="submit" id="searchsubmit" value="Search" name="submit"/> 
</form> 

когда ФОМС сообщения на catsearch.php файл я принимаю все categoryids в массиве и создать URL см ниже код. если выбрано несколько категорий, он создает URL-адрес, например http://abcd.com/?cat=3&cat=7&cat=8&s=dasdasDS. В этом случае он ищет текст только в последнем идентификаторе cat. Я думаю, что это превосходит кошки. Мне нужно, если текст поиска найден в любой категории, тогда все сообщения должны отображаться.

$categoryids = $_POST['category']; 

      echo 'count is ---' .count($categoryids); 

      if($categoryids) 
      { 
       foreach($categoryids as $categoryid) 
       { 
        $cat.= 'cat='.$categoryid.'&'; 
       } 
       echo $cat = trim($cat, '&'); 
       echo '<br />'; 
       $url .= '?'.$cat; 

      } 
if($_POST['searchtext']) 
      { 
       echo 'searchtext---'. $_POST['searchtext']; 
       echo '<br />'; 
       $url .= '&s='.$_POST['searchtext']; 
      } 
<META http-equiv="refresh" content="1;URL=<?php echo get_bloginfo('url')."$url"; ?>"> 

ответ

2

Когда вы делаете что-то вроде этого

cat=3&cat=7&cat=8 

Вы постоянно пересматривая значение $ _GET [ 'кошка']. Так что имеет смысл, что это будет в конечном итоге быть последним - 8.

Синтаксис запросов несколько категорий в WordPress используется запятая

cat=3,7,8 
+0

Спасибо за ваш ответ. После публикации этих вопросов я получил этот путь. –

+0

Пожалуйста, также дайте мне одно предложение. Чтобы получить правильные результаты поиска, сначала отправьте форму на странице, затем создайте URL-адрес и перенаправляйте созданный URL-адрес, используя «" (как вы можете видеть код). Это хороший способ, или у нас есть другой хороший способ сделать это. ?? –

Смежные вопросы