reddyrk
  • 0
Новичок

Форма поиска с категорией и подкатегорией

  • 0

Как создать форму поиска WP с категорией и подкатегорией

для иллюстрации формы поиска (для поиска по заголовку Книга = заголовок поста)

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

Где, подкатегория (CD, PDF, EPub,…)

Я смотрю вокруг в течение недели, но безуспешно,

помогите мне, пожалуйста… => Для моего блога клиента для CMS Электронная книга

Я изменил свою форму следующим образом:

<?php $media = array(
 'hierarchical'       => 1,
 'parent'             => get_cat_id('Media'),
 'show_option_none'   => ('All Media'),
 'hide_empty'   => 0  ); 
?>

<form method="get" id="searchform" action="<?php bloginfo('url'); ?>/">
  <div>
    <input type="text" value="<?php the_search_query(); ?>" name="s" id="s" />
    <?php wp_dropdown_categories('show_option_none=All Category'); ?>
    <?php wp_dropdown_categories($media); ?>
    <input type="submit" id="searchsubmit" value="search" />
  </div>
</form>


Как снова создать функцию или измененную форму? Без Плагина…

За подробный ответ буду очень благодарен!!!

Share
  1. Сначала вы должны указать имена раскрывающихся списков:

    <?php $media = array(
     'name'               => 'subcat',
     'hierarchical'       => 1,
     'parent'             => get_cat_id('Media'),
     'show_option_none'   => ('All Media'),
     'hide_empty'   => 0  ); 
    ?>
    
    <form method="get" id="searchform" action="<?php bloginfo('url'); ?>/">
      <div>
        <input type="text" value="<?php the_search_query(); ?>" name="s" id="s" />
        <?php wp_dropdown_categories('name=maincat&show_option_none=All Category'); ?>
        <?php wp_dropdown_categories($media); ?>
        <input type="hidden" id="my_search" name="my_search" value="c_search" />
        <input type="submit" id="searchsubmit" value="search" />
      </div>
    </form>
    

    Затем создайте фильтр поиска

    // Define search filter
    function search_filter( $query ) {
        // only modify your custom search query.
        if ( $query->is_search &&  $_post['my_search'] == "c_search") {
            $args = array(
                    'relation' => 'AND',
                array(
                    'taxonomy' => 'category',
                    'field' => 'id',
                    'terms' => array( $_post['maincat']),
                    'operator' => 'IN'
                ),
                array(
                    'taxonomy' => 'category',
                    'field' => 'id',
                    'terms' => array( $_post['subcat']),
                    'operator' => 'IN'
                )
            );
            $query->set( 'tax_query', $args);
        }
        return $query;
    }
    
    // The hook needed to search_filter
    add_filter( 'the_search_query','search_filter');
    
    • 0

Оставить ответ

You must login to add an answer.