为访客用户显示某些类别的产品价格

问题描述 投票:0回答:1

我想向访客用户显示产品价格,但仅限于某些类别。此代码禁用产品价格并为所有产品添加到购物车按钮。要提到的是,我在隐藏“添加到购物车”按钮时遇到问题,它不起作用(我使用 woodmart 主题)

add_filter( 'woocommerce_get_price_html', 'hide_price_and_button', 9999, 2 );
 
function hide_price_and_button( $price, $product ) {
   if ( ! is_user_logged_in() ) { 
      $price = '<div><a href="' . get_permalink( wc_get_page_id( 'myaccount' ) ) . '">' . __( 'Login to see prices', 'bbloomer' ) . '</a></div>';
      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', 1000 );
   }
   return $price;
}
php wordpress woocommerce
1个回答
1
投票

您可以使用过滤器并将

woocommerce_is_purchasable
设置为 false。

add_filter( 'woocommerce_is_purchasable', '__return_false');

所以你最终可能会得到这样的结果:

add_filter( 'woocommerce_get_price_html', 'hide_price', 9999, 2 );

function hide_price( $price, $product ) {
   if ( ! is_user_logged_in() ) { 
      $price = '<div><a href="' . get_permalink( wc_get_page_id( 'myaccount' ) ) . '">' . __( 'Login to see prices', 'bbloomer' ) . '</a></div>';
   }
   return $price;
}

add_filter( 'woocommerce_is_purchasable', 'hide_button', 10, 2);

function hide_button( $is_purchasable, $object ) {
   if ( ! is_user_logged_in() ) { 
      $is_purchasable = false;
   }
   return $is_purchasable;
}
© www.soinside.com 2019 - 2024. All rights reserved.