1. Home
  2. Help Center
  3. WooCommerce
  4. Customization
  5. Login to see prices

The following mod will hide the prices for non logged in visitors. Instead is will display a link to open the login form.

Add the following snippet to wp-content/themes/goya-child/functions.php

add_action( 'init', 'custom_hide_price_add_cart_not_logged_in' );
 
function custom_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 );
  add_filter( 'body_class','custom_body_classes_hide_prices' );
  add_filter('woocommerce_get_price_html', 'custom_show_price_logged');
 }
}

function custom_body_classes_hide_prices( $classes ) {
 $classes[] = 'login-to-see-prices';
 return $classes;   
}

function custom_show_price_logged($price) {
 if( is_user_logged_in() ) {
  return $price;
 } else {
  return '<small><a href="' . get_permalink(wc_get_page_id('myaccount')) . '" class="et-menu-account-btn login-to-price"><span class="et-icon et-user"></span> ' . __('Login to see prices', 'theme_name') . '</a></small>';
 }
}Code language: PHP (php)

And this CSS code to Appearance > Customize > Additional CSS or the child theme wp-content/themes/goya-child/style.css

.login-to-see-prices .products .product_after_title .product_after_shop_loop_price {
 transform: none !important;
}
.login-to-see-prices .add_to_cart_button {
 display: none !important;
}
.login-to-see-prices .et-product-detail.et-cart-mixed:not(.sold-individually):not(.product-type-grouped):not(.product-type-external) .summary .yith-wcwl-add-to-wishlist > div {
 margin-left: 0 !important;
 margin-right: 0 !important;
}Code language: CSS (css)

Was this article helpful?

Related Articles