您可能希望强制用户登录以查看价格并将产品添加到购物车。所有您需要的是将以下代码粘贴到您的 functions.php 中(请注意:您的主题可能已经覆盖了一些原始的 WooCommerce 钩子和过滤器,因此下面的代码可能无法正常工作。如果您需要自定义代码,请与我联系)
WooCommerce PHP 代码段:隐藏添加到购物车和价格如果注销并显示 “登录查看价格”(#1)
/** * @snippet Hide Price & Add to Cart for Logged Out Users * @sourcecode https://businessbloomer.com/?p=299 * @author Rodolfo Melogli * @testedwith WooCommerce 3.1.1 */ 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() ) { 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 href="' . get_permalink(wc_get_page_id('myaccount')) . '">' . __('Login to see prices', 'theme_name') . '</a>'; }
替代 PHP 片段(#2)
/** * @snippet Hide Price & Add to Cart for Logged Out Users * @sourcecode https://businessbloomer.com/?p=299 * @author Rodolfo Melogli * @testedwith WooCommerce 2.4.12 */ add_filter('woocommerce_get_price_html', 'bbloomer_show_price_logged'); function bbloomer_show_price_logged($price){ if(is_user_logged_in() ){ return $price; } else { 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 ); remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 ); remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 ); remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 ); remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 ); } } function bbloomer_print_login_to_see() { echo '<a href="' . get_permalink(wc_get_page_id('myaccount')) . '">' . __('Login to see prices', 'theme_name') . '</a>'; }
<
替代的 PHP 片段(#3)
add_action('after_setup_theme','activate_filter') ; function activate_filter(){ add_filter('woocommerce_get_price_html', 'bbloomer_show_price_logged'); } function bbloomer_show_price_logged($price){ if(is_user_logged_in() ){ return $price; } else { return '<a href="' . get_permalink(woocommerce_get_page_id('myaccount')) . '">Login to See Prices</a>'; remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' ); remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 ); remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 ); remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 ); } }
可以在哪里添加此代码?
您可以将 PHP 代码片段放置在主题或子主题的 functions.php 文件的底部(如果是 CSS 代码,请添加到主题的 style.css 文件底部),修改之前建议先备份原始文件,若出现错误请先删除此代码。
这段代码是否正常可用?
或者是您有更好的解决方案想要分享?请到薇晓朵 WooCommerce 中文论坛留言告知,我们希望可以帮到更多国内的 WooCommerce 用户也希望您的参与。
需要关于 WooCommerce 的帮助?
请观看我们提供的免费视频教程或到薇晓朵 WooCommerce 中文论坛提问,会有专业技术团队提供相关帮助。