在相关产品部分,我想过滤掉某些产品。我不能简单地将这些产品隐藏在商店中,因为我想在向上销售部分使用它们。
在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)
) );
答案 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…', '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>