• Resolved gianloga

    (@gianloga)


    Ciao Alessandro, spero tu possa darmi una dritta in merito ad un problema di codice.
    Mi trovo a dover proteggere un area all’interno del template php di pagina che contiene un pulsante associato ad un link che permette il download di un file…
    Ho un codice di questo tipo:

    <?php echo do_shortcode( '[wpum_restrict_logged_in]' ); ?>				
    	
    <?php $value = get_field( "brochure_scaricabile" );
    if( $value ) {
        echo ('<p><a href="'), $value, ('" class="button buttonservice"> '.__('DOWNLOAD SERVICE BROCHURE', 'domain').'</a></p>');
    } else {
    
        echo '';
        
    } ?>		
    <?php echo do_shortcode( '[/wpum_restrict_logged_in]' ); ?>

    Ma l’output che esce è quello di mostrare il messaggio di area protetta e subito sotto il contenuto che dovrei bloccare (ma visibile).

    Avresti modo di darmi un consiglio in merito?
    Grazie
    Gianluca

Viewing 2 replies - 1 through 2 (of 2 total)
  • Plugin Contributor Alessandro Tesoro

    (@alessandrotesoro)

    Ciao Gianluca,

    L’utilizzo della funzione do_shortcode prevede che tutto il contenuto sia in una unica stringa. Nel tuo codice invece stai utilizzando lo shortcode 2 volte.

    Nel tuo caso penso che è inutile utilizzare lo shortcode visto che lo shortcode stesso non fa altro che utilizzare una funzionalità nativa di WordPress https://developer.wordpress.org/reference/functions/is_user_logged_in/ visto che hai accesso diretto ai file del tuo tema, è molto meglio se utilizzi quella funzione la invece che lo shortcode.

    Esempio:

    if ( is_user_logged_in() ) {
    
    	echo 'contenuto nascosto va qui';
    
    } else {
    
    	WPUM()->templates
    		->set_template_data( [ 'message' => 'Messaggio per gli utenti non loggati' ] )
    		->get_template_part( 'messages/general', 'warning' );
    
    }
    Thread Starter gianloga

    (@gianloga)

    Ciao Alessandro,
    ti ringrazio per le indicazioni, ho risolto grazie ai tuoi consigli, questa soluzione inoltre mi permette di personalizzare l’area protetta di volta in volta nei template di WP.
    Ho integrato nel messaggio per gli utenti non loggati anche il link verso l’area login con redirect e le stringhe per la traduzione di WPML, questo il codice (magari torna utile ad altri):

    <?php 
    $value = get_field( "custom_field" );
    $url = get_permalink();
    if ( is_user_logged_in() ) {
    
    	echo ('<p><a href="'), $value, ('" class="class1 class2"> '.__('TEXT FOR TRANSLATION WITH WPML', 'domain_example').'</a></p>');
    
    } else {
    
    	WPUM()->templates
    		->set_template_data( [ 'message' => '<p>Questa risorsa è riservata ad utenti registrati al sito: effettua login o registrati</p><p><a href="/login/?redirect_to='.$url.'" class="class1 class2">'.__('TEXT FOR TRANSLATION WITH WPML', 'domain_example').'</a></p>' ] )
    		->get_template_part( 'messages/general', 'warning' );
    
    }
    ?>

    Grazie
    Un saluto
    Gianluca

Viewing 2 replies - 1 through 2 (of 2 total)
  • The topic ‘shortcode member only content per limitare risorsa caricata con ACF’ is closed to new replies.