カテゴリとキーワードベースの検索フォームを作成したいです。だから私はこの次のフォームを得た
<form role="search" method="get" id="searchform_special" action="<?php echo esc_url( home_url( '/' ) ); ?>">
<div>
<label class="screen-reader-text" for="s"><?php _e( 'Search for:', 'woocommerce' ); ?></label>
<input type="text" value="<?php echo get_search_query(); ?>" name="s" id="s" placeholder="<?php _e( 'Search for products', 'woocommerce' ); ?>" />
<input type="submit" id="searchsubmit" value="<?php echo esc_attr__( 'Search' ); ?>" />
<input type="hidden" name="post_type" value="product" />
<input type="hidden" id="home_url" value="<?php echo esc_url( home_url( '/' ) ); ?>" />
<input type="hidden" id="categ_base_lang" value="<?php echo _x('product-category', 'slug', 'woocommerce') ?>" />
</div>
</form>
これはキーワードに対してのみ機能します。私はこれをカテゴリ検索に更新するとうまくいきませんでした。私のページのスクリーンショットは以下の通りです。
このようなヘッダ検索をしたいのですが。だから私を助けてください
クライアント用に作成しました。pre_get_posts
アクションで実行する必要があります。それはあなたがWordPressクエリにパラメータを追加することを意味します 前に それは投稿を返します。
これをfunctions.phpに追加してください。
// advanced search functionality
function advanced_search_query($query) {
if($query->is_search()) {
// category terms search.
if (isset($_GET['category']) && !empty($_GET['category'])) {
$query->set('tax_query', array(array(
'taxonomy' => '***the_taxonomy_slug_of_your_category***',
'field' => 'slug',
'terms' => array($_GET['category']) )
));
}
}
return $query;
}
add_action('pre_get_posts', 'advanced_search_query', 1000);
上記のコードはcategory
変数を渡したと仮定して動作します。名前として 'category'を持つselect
タグを作成することでそれを行うことができます。
<select name="category">
<option value="***cat_slug***">Cat. name</option>
<option value="***cat_slug***">Cat. name</option>
<option value="***cat_slug***">Cat. name</option>
</select>
<form role="search" method="get" action="<?php echo esc_url( home_url( '/' ) ); ?>">
<!-- With this hidden input you can define a specific post type. -->
<input type="hidden" name="post_type" value="your_post_type" />
<input name="s" type="text" />
<select name="category">
<!-- Insert here all option tags you want, with category slug as value -->
</select>
<button type="submit">Submit</button>
</form>
送信されると、$ _ GET []にはs
、post_type
およびcategory
が含まれます。 s
とpost_type
はデフォルトでWP searchが使われ、category
はpre_get_posts()
でWP queryにパラメータを追加するために使われます。
そのため、最後にWP queryが考慮します。
<form>
タグのaction
属性を次のように置き換えます。
<?php echo get_permalink( wc_get_page_id( 'shop' ) ); ?>
フォームがショップページにのみあることが確実な場合は、空のままにすることもできます。
隠しフィールドの値をproduct
に設定します。これは、WC製品のカスタム投稿タイプのスラッグです。