WooCommerce non prevede di default la possibilità di mostre il prezzo dei prodotti solamente agli utenti registrati. Per nascondere il prezzo agli utenti non registrati, inseriamo all’interno del file functions.php del tema il codice seguente:
add_action( 'init', 'nascondi_prezzo_agli_utenti_non_registrati' ); function nascondi_prezzo_agli_utenti_non_registrati() { 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', 'login_per_visualizzare', 31 ); add_action( 'woocommerce_after_shop_loop_item', 'login_per_visualizzare', 11 ); } }
Per consentire all’utente registrato di effettuare il login ed ad un nuovo utente di registrarsi, inseriamo all’interno del file functions.php del tema il codice seguente:
function login_per_visualizzare() { echo '<a href="' . get_permalink(wc_get_page_id('myaccount')) . '">' . __('</br>effettua il login per visualizzare il prezzo', 'nome_tema') . '</a>'; } function woocommerce_add_registration_fields() {?> <p class="form-row form-row-first"> <label for="reg_billing_first_name"><?php _e( 'First name', 'woocommerce' ); ?><span class="required">*</span></label> <input type="text" class="input-text" name="billing_first_name" id="reg_billing_first_name" value="<?php if ( ! empty( $_POST['billing_first_name'] ) ) esc_attr_e( $_POST['billing_first_name'] ); ?>" /> <p class="form-row form-row-last"> <label for="reg_billing_last_name"><?php _e( 'Last name', 'woocommerce' ); ?><span class="required">*</span></label> <input type="text" class="input-text" name="billing_last_name" id="reg_billing_last_name" value="<?php if ( ! empty( $_POST['billing_last_name'] ) ) esc_attr_e( $_POST['billing_last_name'] ); ?>" /> <div class="clear"></div> <?php } add_action( 'woocommerce_register_form_start', 'woocommerce_add_registration_fields' );