Tuttavia, current_user_can può essere utilizzato non solo con il nome del ruolo dell’utente, ma anche con le funzionalità.
Questo articolo spiega come utilizzare la funzione current_user_can in WordPress. Vengono inoltre introdotti i parametri, il valore restituito ed esempi di utilizzo.
Questa funzione accetta anche un ID di un oggetto per verificare se la capacità è una meta capacità. Le meta capacità come edit_post e edit_user sono capacità utilizzate dalla funzione map_meta_cap() per mappare le capacità primitive di un utente o ruolo, come edit_posts e edit_others_posts.
Restituisce se l’utente corrente ha o meno la capacità specificata.
Struttura
La funzione current_user_can è scritta come segue.
current_user_can( $capability, $args )
Parameter name | Description |
---|---|
$capability (Required) | Capability name |
$args | Additional Parameters |
$capability
Specificare il ruol dell’urente. Required.
I ruoli nativi di wordpress sono ( admin/editor/contributor/contributor/subscriber ) da sostituire $capability.
$args
Specifiche parametri addionati
Restituisce valore vero o falso, facciamo qualche esempio:
wp-includes/capabilities.php current_user_can( 'edit_posts' ); current_user_can( 'edit_post', $post->ID ); current_user_can( 'edit_post_meta', $post->ID, $meta_key )
Sebbene il controllo rispetto a ruoli particolari al posto di una capacità sia supportato in parte, questa pratica è scoraggiata in quanto potrebbe produrre risultati inaffidabili.
function current_user_can( $capability, ...$args ) { return user_can( wp_get_current_user(), $capability, ...$args ); }
Facciamo qualche esempio:
<?php if( current_user_can('editor') || current_user_can('administrator') ) { ?> // qui mettiamo il codice per administrators or editors <?php } ?>
Se vuoi controllare più di due ruoli, puoi controllare se i ruoli dell’utente corrente sono all’interno di un array di ruoli, qualcosa del tipo:
$user = wp_get_current_user(); $allowed_roles = array('editor', 'administrator', 'author'); <?php if( array_intersect($allowed_roles, $user->roles ) ) { ?> // qui mettiamo il codice per i ruoli che sono in $allowed_roles <?php } ?>