php 隐藏某些产品和产品类别在Woocommerce从商店[关闭]

yxyvkwin  于 2023-04-19  发布在  PHP
关注(0)|答案(1)|浏览(145)

已关闭,此问题需要更focused,目前不接受回答。
**要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

17小时前关闭
Improve this question
我有一个卖服装的Woocommerce商店。作为其中的一部分,我为企业提供服务,为他们生产服装。
我会为他们的业务类别,并分配给它的产品,让他们查看所有可用的产品的页面。我不希望这些产品和产品类别在公开访问的网站和商店(也不被谷歌索引),我只是想能够发送企业内的URL,他们可以查看产品,没有人可以看到他们没有链接的人。
我尝试过各种插件,但隐藏产品类别本质上禁用了类别和其中的产品,就好像它们已经被草稿或发送到垃圾桶。
什么是最好的方法来隐藏类别和产品从网站和导航,但仍然有他们直接访问通过直接网址?

nbewdwxp

nbewdwxp1#

你可以给予他们一个客户角色和一个登录名,只向登录的“业务”客户显示相关产品,或者让一个特殊的类别不可见,只有通过URL才能访问,只要企业知道它是什么。
为了隐藏/显示类别,以注销/在客户,你可以使用我的PHP Snippet: Hide Products From Specific Category @ Shop – WooCommerce的这个教程与检查用户角色。
代码(未经测试)应该是这样的,其中“chairs”是您的隐藏类别,“business”是您的特殊用户角色:

add_action( 'woocommerce_product_query', 'bbloomer_hide_products_category_shop' );
   
function bbloomer_hide_products_category_shop( $q ) {
  
    if ( ! wc_current_user_has_role( 'business' ) ) {

        // HIDE CHAIRS TO NORMAL USERS
        $tax_query = (array) $q->get( 'tax_query' );    
        $tax_query[] = array(
           'taxonomy' => 'product_cat',
           'field' => 'slug',
           'terms' => array( 'chairs' ),
           'operator' => 'NOT IN'
        );

    } else {

        // SHOW ONLY CHAIRS
        $tax_query = array();    
        $tax_query[] = array(
           'taxonomy' => 'product_cat',
           'field' => 'slug',
           'terms' => array( 'chairs' ),
           'operator' => 'IN'
        );
    }
  
    $q->set( 'tax_query', $tax_query );
  
}

如果对你有用就告诉我

相关问题