web-dev-qa-db-fra.com

Comment afficher certains paramètres pour les utilisateurs de super administrateur uniquement avec l'aide de l'interface de configuration

Je développe un plugin avec une page d'options en utilisant l'API Settings.

J'aimerais disposer d'un tableau d'options stocké pour mon plugin, mais sur la page des paramètres, j'aimerais que certains paramètres ne soient visibles que par les utilisateurs administrateurs, mais la liste complète des paramètres soit disponible pour le super administrateur.

Est-ce possible?

2
jessica

Testez le rôle de l’utilisateur actuel avec current_user_can( 'administrator' ):

if ( current_user_can( 'administrator' ) )
{
    add_settings_field( /* arguments */ );
    // or
    add_settings_section( /* arguments */ );
}

Veillez à utiliser la même vérification lorsque vous enregistrez les options. Sinon, vos utilisateurs habituels pourraient supprimer les valeurs.

2
fuxia

Sinon, vous pouvez incorporer current_user_can() dans le rappel add_settings_field() pour chaque option réservée à l'administrateur:

function somesetting_add_settings_field( $option ) {
    // This is an admin-only option
    if ( current_user_can( 'administrator' ) {
        // If current user is admin,
        // output the form field
    } else {
        // Otherwise, output a message,
        // or display a static value of the option,
        // etc.
    }
}

Avec cette méthode, vous ne devriez pas avoir à vous soucier de votre balisage de page de paramètres réels.

Si votre rappel de désinfection est écrit correctement, de telle sorte que vous vérifiiez la définition des données et les valeurs array_merge () validées/désinfectées avec les valeurs d'options existantes, vous ne devriez pas avoir à vous soucier des paramètres réservés à l'administrateur qui sont supprimés ou remplacés de manière incorrecte.

1
Chip Bennett