我想问一下如何创建一个woocommerce自定义搜索表单。
我的搜索和过滤表单有3个字段:
类别:我设法将woocommerce产品类别添加到我的自定义搜索html表单中,其中包含<select>
标记:
<?php
$catTerms = get_terms('product_cat', array('hide_empty' => 0, 'orderby' => 'ASC', 'exclude' => '17,77'));
foreach($catTerms as $catTerm) : ?>
<option value="<?php echo $catTerm->slug; ?>"><?php echo $catTerm->name; ?></option>
<?php endforeach; ?>
按作者过滤:(下拉菜单):
我在主题woo_add_custom_general_fields_save()
上使用functions.php,
函数向woocommerce添加了额外的字段。
注意:这不是我们通常在wordpress上使用的'自定义字段'来添加更多元数据,但下面的代码是在产品数据上添加更多字段&gt;一般(关于woocommerce)。
function woo_add_custom_general_fields_save($post_id)
{
$woocommerce_textinput = $_POST['_book_author'];
if( !empty( $woocommerce_textinput ) )
update_post_meta( $post_id, '_book_author', esc_html( $woocommerce_textinput ) );
}
按标题:
我设法使用http://www.example.com/wp-root/woocommerce-product-page/?s=searchproducttitle
输入文字字段:
这是供用户按关键字搜索。
所以这是我完整的自定义html搜索表单:
<form action="<?php echo site_url(); ?>/pm-bookstore/" method="GET">
<select name="">
<?php $catTerms = get_terms('product_cat', array('hide_empty' => 0, 'orderby' => 'ASC', 'exclude' => '17,77')); ?>
<?php foreach($catTerms as $catTerm) : ?>
<option value="<?php echo $catTerm->slug; ?>"><?php echo $catTerm->name; ?></option>
<?php endforeach; ?>
</select>
<select name="">
<option value="">By author</option>
<option value="">By title</option>
</select>
<input type="text" placeholder="Search Book by Title, Author, ISBN..." name="s">
<button class="fa fa-search" type="submit"></button>
</form>
对于搜索参数,我希望能够将它们全部拉出来。但我只能使用?s参数(只是产品标题)。
我尝试使用其他参数,例如product_cat
,tag_ID
,但没有成功。
目前我只能使用
http://www.example.com/wp-root/woocommerce-product-page/?s=searchproducttitle
我的预期结果是:
或
http://www.example.com/wp-root/woocommerce-product-page/?s=searchproducttitle&category=categoryslug
如何使此搜索参数适用于woocommerce搜索?
谢谢。
答案 0 :(得分:1)
在你的下午书店&#39;页面使用WP_Query来获得结果。
// WP_Query arguments
$args = array (
'name' => 'your title',
'post_type' => array( 'product' ),
'post_status' => array( 'publish' ),
'tax_query' => array(
'taxonomy' => 'categories',
'field' => 'slug',
'term' => 'your category slug'
),
'meta_query' => array(
array(
'key' => '_book_author',
'value' => 'your author name',
'compare' => '=',
'type' => 'CHAR',
),
),
);
// The Query
$query = new WP_Query( $args );
我还没有对它进行过测试,但它应该可行。