Php 隐藏除一个类别之外的未登录成员的价格

Php 隐藏除一个类别之外的未登录成员的价格,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我正在尝试对我在这里找到的代码进行一些修改,这将允许我隐藏我的woocommerce商店的所有价格,除了一个类别 我想一直显示价格的类别是“课程”,但我想在用户登录之前隐藏其他产品的价格。我正在尝试对此代码进行更改 add_action( 'init', 'bbloomer_hide_price_add_cart_not_logged_in' ); function bbloomer_hide_price_add_cart_not_logged_in() { if (!

我正在尝试对我在这里找到的代码进行一些修改,这将允许我隐藏我的woocommerce商店的所有价格,除了一个类别

我想一直显示价格的类别是“课程”,但我想在用户登录之前隐藏其他产品的价格。我正在尝试对此代码进行更改


add_action( 'init', 'bbloomer_hide_price_add_cart_not_logged_in' );
  
function bbloomer_hide_price_add_cart_not_logged_in() {   

    if (! is_user_logged_in() && 
        ! has_term( 'courses', 'product_cat' ) ) 
    { 
        remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
        remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
        remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
        remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );   
        add_action( 'woocommerce_single_product_summary', 'bbloomer_print_login_to_see', 31 );
        add_action( 'woocommerce_after_shop_loop_item', 'bbloomer_print_login_to_see', 11 );
    }
}
 
function bbloomer_print_login_to_see() {
    echo '<a class="button product_type_simple" href="' . 
    get_permalink(wc_get_page_id('myaccount')) . '">' . 
    __('Login to see prices', 'theme_name') . '</a>';
}

添加操作('init','bbloomer''u hide''u price''u add''u cart''u not''u logged''u in');
函数bbloomer\u hide\u price\u add\u cart\u not\u logged\u in(){
如果(!用户是否已登录()&&
!有术语(‘课程’、‘产品’))
{ 
删除操作('woocommerce\u在商店\u循环\u项目之后,'woocommerce\u模板\u循环\u添加\u到购物车',10);
删除操作('woocommerce\u single\u product\u summary'、'woocommerce\u template\u single\u add\u to\u cart',30);
删除行动('woocommerce\u single\u product\u summary'、'woocommerce\u template\u single\u price',10);
删除操作('woocommerce'u在'u shop'u loop'u item'u title'之后,'woocommerce'u模板'u loop'u price',10);
添加操作('woocommerce\u single\u product\u summary'、'bbloomer\u print\u login\u to\u see',31);
添加操作('woocommerce'在'u shop'循环'u项目之后,'bbloomer'打印'u登录'u see',11);
}
}
功能bbloomer\u打印\u登录到\u请参阅(){
回声';
}

任何帮助都将不胜感激

只需删除价格,而不是删除每个输出
价格的操作

此代码将从
WC\u Product
类中过滤
get\u price\u html()
函数,并返回空字符串

函数bbloomer\u hide\u price\u add\u cart\u not\u logged\u in(){
全球$产品;
如果(!用户是否已登录()&&
!具有\u术语('courses','product\u cat',$product->get\u id())
{ 
添加过滤器('woocommerce\u get\u price\u html','uuuu return\u empty\u string',10);
删除操作('woocommerce\u在商店\u循环\u项目之后,'woocommerce\u模板\u循环\u添加\u到购物车',10);
删除操作('woocommerce\u single\u product\u summary'、'woocommerce\u template\u single\u add\u to\u cart',30);
删除行动('woocommerce\u single\u product\u summary'、'woocommerce\u template\u single\u price',10);
删除操作('woocommerce'u在'u shop'u loop'u item'u title'之后,'woocommerce'u模板'u loop'u price',10);
}
}
或者。。。要添加“单击登录”按钮

函数bbloomer\u hide\u price\u add\u cart\u not\u logged\u in(){
全球$产品;
如果(!用户是否已登录()&&
!has_term('courses','product_cat',$product->get_id())//添加产品id以检查特定产品是否属于课程类别。
{ 
添加过滤器('woocommerce\u get\u price\u html'、'bbloomer\u print\u login\u to\u see'),
删除操作('woocommerce\u在商店\u循环\u项目之后,'woocommerce\u模板\u循环\u添加\u到购物车',10);
删除操作('woocommerce\u single\u product\u summary'、'woocommerce\u template\u single\u add\u to\u cart',30);
删除行动('woocommerce\u single\u product\u summary'、'woocommerce\u template\u single\u price',10);
删除操作('woocommerce'u在'u shop\u loop\u item\u title'之后,'woocommerce\u template\u loop\u price',10);10);
}
}
功能bbloomer\u打印\u登录到\u请参阅(){
//修改函数以返回值,而不是回显值。
返回“”;
}
修改后的答案增补

  • 访问循环中当前的
    $product
    ,检查它是否属于
    课程
    类别
  • 如果产品属于类别
    课程

这仍然隐藏在课程产品页面上的价格。我应该提到,我想能够隐藏的能力,添加到购物车,直到用户登录了。这适用于所有不属于“课程”类别的产品。好的,此时您将开始使用
remove\u action
删除“添加到购物车”按钮,我会将这些按钮添加到我的回答Hi Mate-谢谢您的回复。然而,这仍然隐藏着整个网站的所有价格。。除了一类以外,不是所有的。。