Настройка поисковой функции?

Я восстанавливаю этот веб-сайт - http://www.mediwales.com/news на платформе WP. Я борюсь с областью поиска в сером поле.

Я удаляю регион и дату, таким образом, мы не должны волноваться о тех, но как я могу установить поиск ключевым словом И сектором?

Я создал пользовательскую таксономию, названную "новостями", которые представят секторы. Насколько я знаю, что нормальный поиск просто ищет весь сайт ключевое слово. Как я могу установить поиск для поиска ключевого слова, но если сектор выбран, только ищут ключевое слово в том секторе? И затем отобразите результаты.

ОБНОВЛЕНИЕ:

                        <?php $args = array(
    'show_option_all'    => '',
    'orderby'            => 'name',
    'order'              => 'ASC',
    'show_last_update'   => 0,
    'style'              => '',
    'show_count'         => 0,
    'hide_empty'         => 1,
    'use_desc_for_title' => 1,
    'child_of'           => 0,
    'feed'               => '',
    'feed_type'          => '',
    'feed_image'         => '',
    'exclude'            => '',
    'exclude_tree'       => '',
    'include'            => '',
    'hierarchical'       => true,
    'title_li'           => '',
    'show_option_none'   => __('No categories'),
    'number'             => NULL,
    'echo'               => 1,
    'depth'              => 0,
    'current_category'   => 0,
    'pad_counts'         => 0,
    'taxonomy'           => 'news',
    'walker'             => 'Walker_Category' ); 
    ?>

    <?php echo wp_list_categories($args); ?>


<?php
function Search_with_in_a_tax( &$query ) {
    if ( is_search() && isset($_GET['sector_array'])) {
        $tax_query = array(
             array(
                'taxonomy' => 'news',
                'terms' => $_GET['sector_array'],
                'field' => 'term_id',
              )
         );
         //turn it into a WP_Tax_Query object
        $tax_query = new WP_Tax_Query($tax_query);
        $query->set("tax_query", $tax_query);
    }
}
add_action('pre_get_posts', 'Search_with_in_a_tax', 1);
?>  

<form method="get" id="searchform" action="<?php bloginfo('home'); ?>/">
<div><input type="text" size="18" value="" name="s" id="s" />
<input type="submit" id="searchsubmit" value="Search" class="btn" />
</div>
</form>

Это - то, что я имею до сих пор. Это, кажется, ищет ключевые слова и выбирает новости. Я не могу сделать секторы можно выбрать (как ссылка наверху) хотя? Как я мог связать два? Поиск затем искал бы в том секторе (таксономия) для ключевого слова.

1
14.02.2020, 11:30
1 ответ

Можно использовать pre_get_posts кричите для фильтрации поискового запроса к выбранным секторам только, чему-то вроде этого:

function Search_with_in_a_tax( &$query ) {
    if ( is_search() && isset($_GET['sector_array'])) {
        $tax_query = array(
             array(
                'taxonomy' => 'news',
                'terms' => $_GET['sector_array'],
                'field' => 'term_id',
              )
         );
         //turn it into a WP_Tax_Query object
        $tax_query = new WP_Tax_Query($tax_query);
        $query->set("tax_query", $tax_query);
    }
}
add_action('pre_get_posts', 'Search_with_in_a_tax', 1);

Обновление: Поместите код сверху в functions.php файл Вашей темы, и затем необходимо произвести категории (секторы) как поля формы в поисковой форме, так попробуйте это:

<form method="get" id="searchform" action="<?php bloginfo('home'); ?>/">
    <div>
        <label for="s">Keyword</label>
        <input type="text" size="18" value="" name="s" id="s" />
    </div>
    <div>
        <label for="sector_array">Sectors</label>
        <?php
        $categories=get_categories(array('orderby' => 'name','order' => 'ASC'));
        foreach ($categories as $category) {
            echo '<input type="checkbox" name="sector_array[]" value="'.$category->cat_ID.'">'.$category->cat_name;
        }
        ?>
    </div>
    <div>
        <input type="submit" id="searchsubmit" value="Search" class="btn" />
    </div>
</form>
1
19.02.2020, 23:06
  • 1
    Хорошо прохладный, спасибо. Таким образом, это обработает ключевое слово также? Как я могу связать это с поисковой формой? –  Rob 16.02.2012, 12:34
  • 2
    Как регистрируются, поскольку Вы устанавливаете из метода, чтобы получить и определить имя поля ключевого слова к s это будет связано для Вас. номер –  Bainternet 16.02.2012, 12:42
  • 3
    Хорошо спасибо. Работы в теории я дам ему движение вскоре. –  Rob 16.02.2012, 13:07
  • 4
    у меня есть поиск, работающий в известной степени. Я не могу вполне соединить секторы все же. Я обновил свой вопрос с тем, что я имею до сих пор. –  Rob 16.02.2012, 18:21
  • 5
    , я обновил свой –  Bainternet 16.02.2012, 22:27

Теги

Похожие вопросы