È possibile mostrare un pulsante solo se l'utente ha effettuato l'accesso?

4 dic 2018, 13:48:01
Visualizzazioni: 21.7K
Voti: 1

Ho una classe "rty-downloads" e vorrei che questa classe venisse mostrata solo agli utenti WordPress che hanno effettuato l'accesso. È possibile?

Grazie in anticipo

3
Commenti

Ciao, posta il tuo codice, per favore.

Krzysiek Dróżdż Krzysiek Dróżdż
4 dic 2018 13:49:09

sì è possibile in WordPress per favore invia il codice

vikrant zilpe vikrant zilpe
4 dic 2018 13:49:36

<?php if ( is_user_logged_in() ) { //mostra il post } else { //continua normalmente } ?>

vikrant zilpe vikrant zilpe
4 dic 2018 13:54:06
Tutte le risposte alla domanda 5
1

Puoi utilizzare questo codice in qualsiasi pagina/template di WordPress.

<?php if ( is_user_logged_in() ) : ?>
    //Codice riservato agli utenti loggati
<?php endif; ?>

Consulta la documentazione per maggiori informazioni: https://developer.wordpress.org/reference/functions/is_user_logged_in/

4 dic 2018 21:32:14
Commenti

molto utile, grazie!

AlphaX AlphaX
11 ott 2020 18:43:58
0

Soluzione più semplice: puoi utilizzare CSS puro in questo modo:

.button-class {display: none;}
.logged-in .button-class {display: block;}
4 dic 2018 21:29:29
0

Per me funziona solo

/* mostra il pulsante del blog solo se loggato */
li.button-class {
    visibility: hidden !important;
    display: none !important;
}
.logged-in li.button-class { 
    visibility: visible !important;
    display: inline-block !important;
}
9 nov 2019 19:30:20
3

Prova questo

add_action( 'loop_start', 'tua_funzione' );
function tua_funzione() {

    if ( is_user_logged_in() ) {
        echo '<li id="text-2" class="hide">';
    } else {
        echo '<li id="text-2">'; 
    }
}
4 dic 2018 13:52:36
Commenti

Perché loop_start?

Jacob Peattie Jacob Peattie
4 dic 2018 13:58:43

L'ho provato ma non sembra funzionare, il modo più semplice potrebbe essere una funzione che controlla se l'utente è loggato per mostrare questa classe "rty-downloads"

Grazie in anticipo

user102195 user102195
4 dic 2018 14:01:44

sì sostituisci, la tua classe e il codice css in questa funzione

dado dado
4 dic 2018 14:57:31
6

Questo è quello che uso:

functions.php (nel tema child):

add_action('shutdown', function() {
    $final = '';
    $levels = ob_get_level();
    for ($i = 0; $i < $levels; $i++)
    {
        $final .= ob_get_clean();
    }
    echo apply_filters('final_output', $final);
}, 0);

add_filter('final_output', function($output) {
  $display1 = 'none';
  $display2 = 'block';

  if(is_user_logged_in()) {
    $display1 = 'block';
    $display2 = 'none';
  }

  $from = array('%display1%', '%display2%');
  $to = array($display1, $display2);
  $output = str_replace($from,$to,$output);

  return $output;
});

CSS:

.for-logged-in-users {
display: %display1%;
}
.for-logged-out-users {
display: %display2%;
}

Successivamente puoi semplicemente aggiungere questi due nomi di classe agli elementi che vuoi mostrare/nascondere. In questo modo puoi mostrare/nascondere qualsiasi elemento basandoti su qualsiasi logica.

27 ago 2021 13:15:34
Commenti

final_output non è un filtro core di WordPress, almeno che io sappia? Viene dal tuo plugin di cache o qualcosa di simile? Come filtra il CSS che di solito viene servito staticamente dal server web?

Rup Rup
27 ago 2021 18:09:52

Inoltre non sono sicuro che ci sia un beneficio nel fare così rispetto alla soluzione CSS pura usando la classe logged-in del tag body che WordPress già genera.

Rup Rup
27 ago 2021 18:10:19

Scusa, ho dimenticato di inserire la parte add_action, l'ho corretta :)

Bandi Bandi
29 ago 2021 11:55:03

Non capisco bene la soluzione CSS pura, puoi spiegarmela?

Bandi Bandi
29 ago 2021 11:56:35

Se sei loggato nel sito, WordPress aggiunge la classe 'logged-in' al tag body. Il selettore CSS body.logged-in .for-logged-in-users significa elementi che hanno la classe for-logged-in-users che sono sotto un tag body con la classe logged-in, e data una scelta di elementi corrispondenti, CSS darà la priorità a quello più specifico. Quindi puoi fare .for-logged-in-users { display: none; } per nascondere quegli elementi di default e anche body.logged-in .for-logged-in-users { display: block; } così che se c'è la classe logged-in sul tag body sovrascriviamo il display: none con display: block.

Rup Rup
29 ago 2021 14:43:05

Capisco, è effettivamente una soluzione migliore, grazie per la spiegazione. Però ho altre classi CSS e altri testi unici che devono essere modificati/sostituiti basandosi su condizioni più complesse, quindi per me ha più senso modificare anche queste classi con questa funzione PHP.

Bandi Bandi
30 ago 2021 16:12:51
Mostra i restanti 1 commenti