[英]Hide "Add to Cart" button for logged in users in Woocommerce
在我的網站上(使用 Woocommerce 3.2.6),我只想為登錄用戶隱藏“添加到購物車”按鈕。
我有這段代碼:
add_action('init', 'hide_price_add_cart_logged_in');
function hide_price_add_cart_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 );
}
}
編輯:有人建議我使用這個:
add_action('init', 'hide_price_add_cart_logged_in');
function hide_price_add_cart_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 );
return WooCommerce::instance();
}
}
但這沒有用...
我已將這段代碼插入 functions.php 文件到我的主題中,但它似乎沒有做任何改變。 檢查某些產品時,我仍然看到添加到購物車按鈕。
如何刪除該按鈕? 我的 function 錯誤在哪里?
您應該嘗試以下方法:
add_action( 'woocommerce_after_shop_loop_item', 'remove_loop_add_to_cart_button', 1 );
function remove_loop_add_to_cart_button() {
// Only for logged in users
if( ! is_user_logged_in() ) return;
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
}
add_action( 'woocommerce_single_product_summary', 'remove_add_to_cart_button', 1 );
function remove_add_to_cart_button() {
// Only for logged in users
if( ! is_user_logged_in() ) return;
global $product;
// For variable product types (keeping attribute select fields)
if( $product->is_type( 'variable' ) ) {
remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
}
// For all other product types
else {
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
}
}
代碼進入您的活動子主題(或活動主題)的function.php文件中。
經過測試和工作
您可以用鏈接到產品的按鈕代替它,而不是在存檔頁面(例如商店)上隱藏“添加到購物車”按鈕。 因此,代碼將改為:
// Replacing the button add to cart by a link to the product in Shop and archives pages
add_filter( 'woocommerce_loop_add_to_cart_link', 'replace_loop_add_to_cart_button', 10, 2 );
function replace_loop_add_to_cart_button( $button, $product ) {
// Only for logged in users
if( ! is_user_logged_in() ) return;
$button_text = __( "View product", "woocommerce" );
$button = '<a class="button" href="' . $product->get_permalink() . '">' . $button_text . '</a>';
return $button;
}
add_action( 'woocommerce_single_product_summary', 'remove_add_to_cart_button', 1 );
function remove_add_to_cart_button() {
// Only for logged in users
if( ! is_user_logged_in() ) return;
global $product;
// For variable product types (keeping attribute select fields)
if( $product->is_type( 'variable' ) ) {
remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
}
// For all other product types
else {
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );;
}
}
代碼進入您的活動子主題(或活動主題)的function.php文件中。
經過測試和工作
add_action( 'init', 'shessvy_hide_price_add_cart_not_logged_in' );
function shessvy_hide_price_add_cart_not_logged_in() {
if ( ! is_user_logged_in() ) {
add_filter( 'woocommerce_is_purchasable', '__return_false');
add_action( 'woocommerce_single_product_summary', 'shessvy_print_login_to_see', 31 );
add_action( 'woocommerce_after_shop_loop_item', 'shessvy_print_login_to_see', 11 );
add_action( 'woocommerce_simple_add_to_cart', 'shessvy_print_login_to_see', 30 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
}
}
function shessvy_print_login_to_see() {
echo '<a href="' . get_permalink(wc_get_page_id('myaccount')) . '" rel="nofollow ugc">' . __('Login to add this item to your cart', 'theme_name') . '</a>';
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.