非常简单的概念......如果用户没有登录,我想在WooCommerce中隐藏所有带有“Wholesale”标签的产品......我已经接近了,但还没有骰子。
我目前有什么
$product_tags = wp_get_post_terms( $product->id, 'product_tag' );
if ( ! empty( $product_tags ) ) {
foreach( $product_tags as $tag ) {
if ( $tag->slug === 'wholesale' && ! is_user_logged_in() ) {
return;
}
}
}
见要点:https://gist.github.com/DerekFoulk/d94646da9f22d5dddff6
我的努力结果可以在此页面上看到:http://gigacord.com/shop/
从结果中可以看出,产品网格中存在漏洞,因为该行应该在产品1/3(每行)和.first
项目上具有类.last
3/3。我目前正在“删除”产品显然是在计算每行项目然后分配所述类的逻辑之后。
这段代码并不能满足我的所有需求。简而言之,我想尽快从产品数组中删除产品(在我的主题开始构建其元素之前)。我还想在直接访问产品页面时隐藏所有产品信息(可能是一个不同的问题)。
那么,是否有一个WooCommerce钩子可以在所有产品显示的地方运行,如果有,我如何使用该钩子隐藏具有“Wholesale”标签的产品?
答案 0 :(得分:3)
这里...
function rei_exclude_by_product_tag( $query ) {
if ( $query->is_main_query() && is_woocommerce() && !is_user_logged_in() ) {
$taxquery = array(
array(
'taxonomy' => 'product_tag',
'field' => 'id',
'terms' => array( 6 ), // the ID of the product tag
'operator'=> 'NOT IN' // exclude
)
);
$query->set('tax_query', $taxquery);
}
}
add_action( 'pre_get_posts', 'rei_exclude_by_product_tag' );