首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向未登录的用户隐藏产品(使用标记)?

向未登录的用户隐藏产品(使用标记)?
EN

Stack Overflow用户
提问于 2016-01-08 19:45:49
回答 2查看 1.8K关注 0票数 2

很简单的概念..。如果用户没有登录,我想隐藏所有标签为"Wholesale“的产品在WooCommerce中的任何地方。我已经接近了,但现在还没有骰子。

我现在拥有的

代码语言:javascript
复制
$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;
        }
    }
}

参见Gist: https://gist.github.com/DerekFoulk/d94646da9f22d5dddff6

我的努力的结果可以在这个页面上看到:http://gigacord.com/shop/

从结果中可以看出,产品网格中存在漏洞,因为该行应该在产品1/3 (每行)上有类.first,在第3/3项上有.last类。在我目前“删除”产品的逻辑之后,显然是在每一行计数项目,然后分配所述类之后。

这个片段做不到我想做的一切。简而言之,我想尽快从products数组中删除产品(在我的主题能够开始构造它的元素之前)。当直接访问产品页面时,我还想隐藏所有的产品信息(可能是另一个问题)。

那么,是否有一个WooCommerce钩子可以在所有产品显示的地方运行,如果是的话,我如何使用该钩子隐藏带有"Wholesale“标签的产品?

EN

回答 2

Stack Overflow用户

发布于 2016-01-09 04:45:19

你最好用pre_get_posts

在这里..。

代码语言:javascript
复制
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' );
票数 4
EN

Stack Overflow用户

发布于 2022-01-04 18:12:42

谢谢雷杰尔!!一直在找这个。

关于“Reigel”的边注:(供那些对类别进行调查的人使用)

您也可以将"product_tag“替换为"product_cat”。

当我瞄准我的公共类别时为我工作过。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34684881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档