Поиск сообщений на основе нескольких категорий WordPress - PullRequest
2 голосов
/ 16 декабря 2011

Я работаю над поиском в 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, я беру все идентификаторы категорий в массиве и создаю URL, см. Код ниже. если выбрано несколько категорий, создается URL-адрес типа http://abcd.com/?cat=3&cat=7&cat=8&s=dasdasDS. В этом случае он ищет текст только по последнему идентификатору кошки. Я думаю, что это перевешивает каидусы. Мне нужно, если мой текст поиска найден в какой-либо категории, тогда должны отображаться все сообщения.

$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"; ?>">

1 Ответ

2 голосов
/ 16 декабря 2011

Когда вы делаете что-то подобное

cat=3&cat=7&cat=8

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

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

cat=3,7,8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...