在Woocommerce中,按文本或类别过滤掉某些相关产品

时间:2017-04-23 11:16:02

标签: wordpress woocommerce

在相关产品部分,我想过滤掉某些产品。我不能简单地将这些产品隐藏在商店中,因为我想在向上销售部分使用它们。

在related.php文件中,我可以使用任何参数来过滤掉某些产品吗?我想要过滤的产品,都包含“set”这个词,它们也有一个“setBadge”类。我可以用它们以某种方式过滤掉它们吗? (我不能使用css,因为我使用display:none,他们留下一个空的空间,我想将它们从循环中排除)。

$args = apply_filters('woocommerce_related_products_args', array(
    'post_type'             => 'product',
    'ignore_sticky_posts'   => 1,
    'no_found_rows'         => 1,
    'posts_per_page'        => $posts_per_page,
    'orderby'               => $orderby,
    'post__in'              => $related,
    'post__not_in'          => array($product->id)
) );

1 个答案:

答案 0 :(得分:0)

在没有$ wpdb的情况下,我找不到一个简单的方法,但你可以尝试这样的事情 -

$search_query = 'iPhone air pods';
$break_query = explode(' ', $search_query);
$final_params = [];

/* $break_query = array(
    'iphone',
    'air',
    'pods'
); */

foreach( $break_query as $q ) {
    $args = array(
        'key' => '_price',
        'value' => $q,
        'compare' => '<=',
        'type' => 'NUMERIC'
    );

    array_push( $final_params, $q );
}

$params = array(
        'posts_per_page' => 100,
        'post_type' => array('product', 'product_variation'),
        'meta_query' => array(
            'relation' => 'OR',
            $final_params
        )
);

此代码尚未经过测试,但我在此处所做的是 -
我已经拆分了每个单词的主要查询,然后我动态创建了$ params数组。关系是&#34; OR&#34;因此,如果找到任何这些关键字,将显示该产品。

另一种选择是使用WooCommerce的默认搜索 -

<form role="search" method="get" class="woocommerce-product-search" action="<?php echo esc_url( home_url( '/'  ) ); ?>">
    <label class="screen-reader-text" for="s"><?php _e( 'Search for:', 'woocommerce' ); ?></label>
    <input type="search" class="search-field" placeholder="<?php echo esc_attr_x( 'Search Products&hellip;', 'placeholder', 'woocommerce' ); ?>" value="<?php echo get_search_query(); ?>" name="s" title="<?php echo esc_attr_x( 'Search for:', 'label', 'woocommerce' ); ?>" />
    <input type="submit" value="<?php echo esc_attr_x( 'Search', 'submit button', 'woocommerce' ); ?>" />
    <input type="hidden" name="post_type" value="product" />
</form>