web-dev-qa-db-ja.com

カテゴリとサブカテゴリを含む検索フォーム

カテゴリとサブカテゴリでWP検索フォームを作成する方法
説明のための検索フォーム(検索タイトルの場合はBook =タイトルの投稿)
キーワード付き、全カテゴリ別、サブカテゴリ選択の条件付き
ここで、サブカテゴリ(CD、PDF、EPubなど)
私は1週間先を見ますが失敗しました、
助けてください、お願いします... => CMS Ebookに関するMy Clientブログの場合

私はこのように自分のフォームを変更しました:

<?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>


関数や修正フォームを再度作成するにはどうすればいいですか?プラグインなしの場合...
詳しい答えについて、私はとても感謝しています!

2
Reddy 'Rk'

まず、ドロップダウンの名前をつける必要があります。

<?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');
3
Bainternet