Alcuni siti web di tipologia e-commerce mostrano il prezzo dei prodotti solamente agli utenti registrati; se è stato utilizzato WooCommerce per progettare il negozio on-line, questa funzionalità non viene offerta di default. In questo articolo vedremo come risolvere il problema mediante l’inserimento di codice PHP all’interno del file functions.php del tema.

mostrare 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 e per permettere ad un nuovo utente di registrarsi, inseriamo all’interno del file functions.php del tema il codice seguente:

function login_per_visualizzare() {
	echo &#039;<a href=&quot;&#039; . get_permalink(wc_get_page_id(&#039;myaccount&#039;)) . &#039;&quot;>&#039; . __(&#039;</br>effettua il login per visualizzare il prezzo&#039;, &#039;nome_tema&#039;) . &#039;</a>&#039;;
}

function woocommerce_add_registration_fields() {?>
<p class=&quot;form-row form-row-first&quot;>
        <label for=&quot;reg_billing_first_name&quot;><?php _e( &#039;First name&#039;, &#039;woocommerce&#039; ); ?><span class=&quot;required&quot;>*</span></label>
        <input type=&quot;text&quot; class=&quot;input-text&quot; name=&quot;billing_first_name&quot; id=&quot;reg_billing_first_name&quot; value=&quot;<?php if ( ! empty( $_POST[&#039;billing_first_name&#039;] ) ) esc_attr_e( $_POST[&#039;billing_first_name&#039;] ); ?>&quot; />
<p class=&quot;form-row form-row-last&quot;>
        <label for=&quot;reg_billing_last_name&quot;><?php _e( &#039;Last name&#039;, &#039;woocommerce&#039; ); ?><span class=&quot;required&quot;>*</span></label>
        <input type=&quot;text&quot; class=&quot;input-text&quot; name=&quot;billing_last_name&quot; id=&quot;reg_billing_last_name&quot; value=&quot;<?php if ( ! empty( $_POST[&#039;billing_last_name&#039;] ) ) esc_attr_e( $_POST[&#039;billing_last_name&#039;] ); ?>&quot; />
<div class=&quot;clear&quot;></div>
<?php
}
add_action( &#039;woocommerce_register_form_start&#039;, &#039;woocommerce_add_registration_fields&#039; );