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.