WooCommerce按类别和自定义字段过滤搜索

时间:2014-04-28 10:52:11

标签: php wordpress woocommerce hook-woocommerce

我想问一下如何创建一个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_cattag_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&author=authorname

  

http://www.example.com/wp-root/woocommerce-product-page/?s=searchproducttitle&category=categoryslug

如何使此搜索参数适用于woocommerce搜索?

谢谢。

1 个答案:

答案 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 );

我还没有对它进行过测试,但它应该可行。