Este posibil să afișezi un buton doar pentru utilizatorii autentificați?

4 dec. 2018, 13:48:01
Vizualizări: 21.7K
Voturi: 1

Am o clasă "rty-downloads" pe care vreau să o afișez doar pentru utilizatorii autentificați în WordPress. Este posibil acest lucru?

Mulțumesc anticipat

3
Comentarii

Salut, postează codul, te rog.

Krzysiek Dróżdż Krzysiek Dróżdż
4 dec. 2018 13:49:09

da, este posibil în WordPress, te rog trimite codul

vikrant zilpe vikrant zilpe
4 dec. 2018 13:49:36

<?php if ( is_user_logged_in() ) { //afișează postarea } else { //continuă normal } ?>

vikrant zilpe vikrant zilpe
4 dec. 2018 13:54:06
Toate răspunsurile la întrebare 5
1

Puteți folosi acest cod în orice pagină/șablon WordPress.

<?php if ( is_user_logged_in() ) : ?>
    //Cod pentru utilizatorii autentificați
<?php endif; ?>

Consultați documentația pentru mai multe informații: https://developer.wordpress.org/reference/functions/is_user_logged_in/

4 dec. 2018 21:32:14
Comentarii

foarte util, mulțumesc!

AlphaX AlphaX
11 oct. 2020 18:43:58
0

Soluția cea mai simplă: Puteți folosi CSS pur astfel:

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

Pentru mine funcționează doar

/* afișează butonul de blog doar dacă ești autentificat */
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

Încearcă asta

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

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

De ce loop_start?

Jacob Peattie Jacob Peattie
4 dec. 2018 13:58:43

Am încercat dar nu pare să funcționeze, cea mai ușoară metodă ar fi o funcție care verifică dacă utilizatorul este autentificat pentru a afișa această clasă "rty-downloads"

Mulțumesc anticipat

user102195 user102195
4 dec. 2018 14:01:44

da, înlocuiește clasa ta și codul css în această funcție

dado dado
4 dec. 2018 14:57:31
6

Asta folosesc eu:

functions.php (în tema copil):

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%;
}

Apoi poți pur și simplu să adaugi aceste două nume de clase pentru elementele pe care vrei să le afișezi/ascunzi. În acest fel poți afișa/ascunde orice elemente bazat pe orice logică.

27 aug. 2021 13:15:34
Comentarii

final_output nu cred că este un filtru WordPress de bază? Probabil este din plugin-ul tău de cache sau ceva similar? Cum filtrează el CSS-ul care de obicei este servit static de serverul web?

Rup Rup
27 aug. 2021 18:09:52

De asemenea, nu sunt sigur că există un beneficiu în a face asta în locul soluției pure CSS folosind clasa logged-in de pe tag-ul body pe care WordPress o generează deja.

Rup Rup
27 aug. 2021 18:10:19

Scuze, am uitat să introduc partea cu add_action, am corectat-o :)

Bandi Bandi
29 aug. 2021 11:55:03

Nu înțeleg cu adevărat soluția cu CSS pur, poți să-mi explici?

Bandi Bandi
29 aug. 2021 11:56:35

Dacă ești autentificat pe site, WordPress adaugă o clasă 'logged-in' pe tag-ul body. Selectorul CSS body.logged-in .for-logged-in-users înseamnă elementele care au clasa for-logged-in-users și se află sub un tag body cu clasa logged-in, iar dacă există mai multe elemente potrivite, CSS va acorda prioritate celui mai specific. Așadar, poți folosi .for-logged-in-users { display: none; } pentru a ascunde acele elemente în mod implicit și body.logged-in .for-logged-in-users { display: block; } astfel încât, dacă există clasa logged-in pe tag-ul body, să suprascriem display: none cu display: block.

Rup Rup
29 aug. 2021 14:43:05

Am înțeles, asta e într-adevăr o soluție mai bună, mulțumesc pentru explicație. Totuși, am alte clase CSS și alte texte unice care trebuie modificate/înlocuite în funcție de condiții mai complexe, așa că pentru mine are mai mult sens să modific și aceste clase cu această funcție PHP.

Bandi Bandi
30 aug. 2021 16:12:51
Arată celelalte 1 comentarii