我正在实施一家商店,只允许登录用户查看添加到购物车按钮。
我使用以下代码成功隐藏了大部分内容:
function thread_remove_loop_button(){
if(!is_user_logged_in() ){
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 );
}
}
add_action('init','thread_remove_loop_button');
然而,新产品和新产品中仍有一些展示。畅销小部件。查看代码,我可以看到这些代码正在调用短代码
do_shortcode('[add_to_cart id="'.$product->id.'"]');
修改这些内容的最佳方法是什么,因此仅对登录用户显示“添加到购物车”按钮。显然,在模板中,我可以按照
的方式做一些事情if(is_user_logged_in())
echo do_shortcode('[add_to_cart id="'.$product->id.'"]');
}
但似乎应该有更好的方法?沿着一个钩子或什么的线?
答案 0 :(得分: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(woocommerce_get_page_id('myaccount')) . '">' . __('Login to see prices', 'theme_name') . '</a>';
}
把它放在你的插件/ woocommerce / woocommerce.php中 它将隐藏价格并添加到购物车按钮并打印声明登录以查看价格
答案 1 :(得分:0)
添加到购物车模板功能是可插入的,这意味着如果您在主题中使用相同的名称定义一个功能,它将覆盖WooCommerce的功能。
function woocommerce_template_loop_add_to_cart( $args = array() ) {
if(is_user_logged_in()){
wc_get_template( 'loop/add-to-cart.php' , $args );
}
}
答案 2 :(得分:0)
你需要使用不影响其他代码的钩子。
add_action('init', 'hide_add_cart_not_logged_in');
function hide_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 );
}
}
仅允许登录用户查看“添加到购物车”按钮。
在这里你可以获得WooCommerce Action和Filter Hook - https://docs.woothemes.com/wc-apidocs/hook-docs.html