• Salut,

    Am nevoie si eu de o functie care sa preieie rolul unul user, nu user-ului curent, ci user-ului care a postat un comentariu.
    In pagina themplate.php din Arras/library am o linie de cod:
    <?php echo get_comment_author_link() ?>
    care imi afiseaza autorul comentariului. As dori sa fac in asa fel incat dupa nume sa apara si rolul lui.
    La fel ca si in exemplu acesta:
    AnDr3yy (administrator)

    Daca stie cineva functia, mi-o trebuie si mie.

    Multumesc,
    Andrei B.

Vizualizare 10 răspunsuri - 1 la 10 (din 10 în total)
  • Pedro

    (@petredobrescu)

    Salut,

    Cred ca o sa te ajute thread-ul asta:

    http://wordpress.org/support/topic/get-a-users-role-by-user-id?replies=20

    Acolo sunt descrise mai multe moduri de a obtine rolul.

    Succes!

    Inițiator fir de discuții AnDr3yy

    (@andr3yy)

    Le-am incercat pe toate, nici unul nu functioneaza.

    Ai nevoie să afișeze orice rol ar fi sau doar cel de aministrator?

    Îți scriu în câteva ore o funcție mică pt așa ceva

    Inițiator fir de discuții AnDr3yy

    (@andr3yy)

    Doresc sa afisez ceva daca rolul este Premium, adica daca acel user detine rolul Premium, atunci sa afiseze dupa nume (Premium).
    Exemplu: imaginea cu o seta huit4s (Premium – cu un link catre detalii despre contul premium).

    O functie care returneaza rolul fiecarui user e foarte bine, dupa aceea un if ($user_role == ‘premium’) echo ‘ ‘; … am rezolvat treaba.

    ok, adaugă funcțiile astea în functions.php

    function dece_get_commenter_role( $comment_ID = 0 ) {
    	global $wp_roles;
    	$comment = get_comment( $comment_ID );
    
    	if (!empty($comment->user_id)){
    		$user = get_userdata( $comment->user_id );
    		$role = array_shift( $user->roles );
    		$display_role = translate_user_role( $wp_roles->role_names[$role]);
    	} 
    
    	return $display_role;
    }
    
    function dece_commenter_role( $comment_ID = 0 ) {
    	echo dece_get_commenter_role( $comment_ID );
    }

    și mai apoi poți folosi <?php dece_commenter_role(); ?> undeva în șablonul de comentarii

    Inițiator fir de discuții AnDr3yy

    (@andr3yy)

    Multumesc, foarte mult, functioneaza. Eu nu ma pricep la php, si nu stiu unde sa pun conditia ca sa-mi afiseze rolul doar daca e Premium, daca ma poti ajuta o ultima oara.

    Mersi foarte mult.

    Normal că funcționează 🙂

    Poftim, funcții complete, cu modificări pentru verificarea de rol și comentarii pe marginea codului.

    Funcția de bază se folosește în șablonul de comentarii. Ex:
    <?php dece_commenter_role('premium'); ?>

    cod de introdus în functions.php:

    /**
     * Retrieve specified commenter role.
     *
     * @param string $commenter_role Role to display.
     * @param int $comment_ID (Optional) Comment ID.
     * @return string|null Translated Role string. Null, if the commenter doesn't have the specified role.
     *
     * @author Dan Stefancu {@link http://deceblog.net}
     */
    function dece_get_commenter_role( $commenter_role = '', $comment_ID = 0 ) {
    	global $wp_roles;
    
    	$comment = get_comment( $comment_ID );
    	$display_role = null;
    
    	if ( !empty($comment->user_id) ){
    		$user = get_userdata( $comment->user_id );
    		$role = array_shift( $user->roles );
    		if ( isset($commenter_role) && stripos($role, $commenter_role) !== false )
    			$display_role = translate_user_role( $wp_roles->role_names[$role] );
    	} 
    
    	return $display_role;
    }
    
    /**
     * Display specified commenter role.
     *
     * @param string $commenter_role Role to display.
     * @param int $comment_ID (Optional) Comment ID.
     * @return string|null Translated Role string. Null, if the commenter doesn't have the specified role.
     *
     * @author Dan Stefancu {@link http://deceblog.net}
     */
    function dece_commenter_role( $commenter_role = '', $comment_ID = 0 ) {
    	echo dece_get_commenter_role( $commenter_role, $comment_ID );
    }
    Inițiator fir de discuții AnDr3yy

    (@andr3yy)

    Functioneaza, mersi foarte mult.

    Vreau ca sa afiseze (Premium) la cei cu Premium. Am incercat sa pun echo ‘(‘,dece_get_commenter_role( $commenter_role, $comment_ID ),’)’;, dar afiseaza (la cei fara premium).

    Si daca se poate, doresc la cei cu premium sa afiseze si o steluta in fata numelui, o imagine de 16 x 16 pixeli. Presupun ca trebuie o noua functie, daca se poate sa mi-o faci si pe aceea.

    Multumesc foarte mult.

    Te-am ajutat, dar nu am de gând să-ți fac toată munca. Vrei deja cam multe. Dacă oferi servicii premium poți să și plătești pentru asistență.

    Inițiator fir de discuții AnDr3yy

    (@andr3yy)

    Ok, nici o problema. Multumesc foarte mult de ajutor.

Vizualizare 10 răspunsuri - 1 la 10 (din 10 în total)
  • Subiectul „User Role” este închis pentru răspunsuri noi.