Aller au contenu | Aller au menu | Aller à la recherche

Site membre du réseau Izardev et LCNET

Plugin wordpress - créer un panneau utilisateur

Il peut y avoir des situations où les utilisateurs peuvent être amenés à gérer leurs propres paramètres pour votre plugin : dans le cas de notre projet de chat Javascript, nous allons permettre d'une part aux utilisateur d'afficher ou non le chat, et d'utiliser les smileys ou non.

C'est l'objet de cet article : apprendre à créer un panneau de contrôle utilisateur pour notre plugin de la même manière que nous avions créé le panneau d'administration de notre plugin wordpress.

Modification de la classe principale

Si vous n'êtes pas familier avec la structure d'un plugin wordpress, je vous engage à vous rendre à l'article relatif.

Nous ajoutons donc un attribut $userOptionsName à la classe principale wp_jschat qui gérera ces options, nous lui affectons la chaîne unique 'wp_jschatUserOptions'.

class wp_jschat 
{
        var $adminOptionsName = 'wp_jschatAdminOptions';
        var $userOptionsName = 'wp_jschatUserOptions';

Définition des options par défaut

De la même manière que pour les options d'administration du plugin, nous devons définir les options utilisateur par défaut. La différence est que ces options devront être accessibles en dehors du panneau d'administration, où les utilisateurs sont susceptibles de se rendre en étant connecté.

/**
 * Renvoi le tableau des options utilisateur
 * @global string $user_email
 * @return string
 */
function getUserOptions() {
    global $user_email;
    if (empty($user_email)) {
        get_currentuserinfo();
    }
    if (empty($user_email)) {
        return '';
    }
    $options = get_option($this->userOptionsName);
    if (!isset($options)) {
        $options = array();
    }
    if (empty($options[$user_email])) {
        $options[$user_email] = 'true,true';
        update_option($this->userOptionsName, $options);
    }
    return $options;
}
    if (empty($options[$user_email])) {
        $options[$user_email] = 'true,true';
        update_option($this->userOptionsName, $options);
    }
    return $options;
}

Cette fonction :

  • Vérifie si un utilisateur est logué (en regardant si $user_email est défini),
  • tente de trouver si des options ont déjà été définies dans la base de données,
  • si les options n'existent pas dans la base de données, on affecte les options par défaut,
  • on renvoi les options pour l'utilisateur.

Initialisation des options utilisateur

La méthode getUserOptions() peut être appelée n'importe quand pour rechercher les options d'utilisateur. Mais les paramètres doivent être initialisés lorsque le plugin est installé pour la première fois, nous appelons donc getUserOptions() dans la méthode init() que nous avons crée précédemment.

function init() 
{
    $this->getAdminOptions();
    $this->getUserOptions();
}

Une action wordpress a déjà été délivrée lorsque nous avons crée le panneau d'administration, inutile de la rappeler.

Dans les options d'administration, nous définissons si le chat est actif ou non et y ajoutons une liste d'IP bannies. Ici, nous laissons la possibilité aux utilisateurs de désactiver le chat.

Création du panneau utilisateur

Maintenant que nous avons crée les paramètres dans l'administration, il faut créer le panneau utilisateur afin de leur permettre de gérer leurs options. Nous devons donc ajouter une méthode pour afficher le formulaire des options utilisateurs.

/**
 * Affichage de la configuration utilisateur du plugin
 * @global string $user_email
 */
function printUsersOptionPage()
{
    global $user_email;
    if(!is_user_logged_in()) die();
    if (empty($user_email))
    {
        get_currentuserinfo();
    }
    $options = $this->getUserOptions();
    if (isset($_POST['update_wp_jschatSettings']) && isset($_POST['enable_chat']) && isset($_POST['enable_smileys'])) {
        if (isset($user_email))
        {
            $options[$user_email] = $_POST['enable_chat'] . "," . $_POST['enable_smileys'];
            print '<div class="updated"><p>';
            _e("Paramètres mis à jour", "wpjschat");
            print '</strong></p></div>';
            update_option($this->userOptionsName, $options);
        }
    }
    $opts = explode(",", $options[$user_email]);
    $enable_chat = 'true';
    $enable_smileys = 'true';
    if (sizeof($opts) >= 2)
    {
        $enable_chat = $opts[0];
        $enable_smileys = $opts[1];
    }
    include('php/options_settings.php');
}

Cette méthode :

  • récupère les options utilisateurs,
  • sauvegarde les données soumises dans la base s'il y en a,
  • lis les options utilisateurs.
  • affiche le formulaire.

Créons maintenant le formulaire que nous incluons :

<div class=wrap>
    <form method="post" action="<?php echo $_SERVER["REQUEST_URI"]; ?>">
        <h2><?php _e('Options du chat', "wp_jschat"); ?></h2>
        <h3><?php _e('Activer le chat ?', "wp_jschat"); ?></h3>
        <p>
            <label for="enable_chat_yes">
                <input type="radio" id="enable_chat_yes" name="enable_chat" value="true" <?php print ($enable_chat == "true")?  'checked="checked"' : ''; ?> />
                <?php _e('Oui', "wp_jschat"); ?>
            </label>
            <label for="enable_chat_no">
                <input type="radio" id="enable_chat_no" name="enable_chat" value="false" <?php print ($enable_chat != "true")?  'checked="checked"' : ''; ?> />
                <?php _e('Non', "wp_jschat"); ?>
            </label>
        </p>
        <h3><?php _e('Activer les smileys ?'); ?></h3>
        <p>
            <label for="enable_smileys_yes">
                <input type="radio" id="enable_smileys_yes" name="enable_smileys" value="true" <?php print ($enable_smileys == "true")?  'checked="checked"' : ''; ?> />
                <?php _e('Oui', "wp_jschat"); ?>
            </label>
            <label for="enable_smileys_no">
                <input type="radio" id="enable_smileys_no" name="enable_smileys" value="false" <?php print ($enable_smileys != "true")?  'checked="checked"' : ''; ?> />
                <?php _e('Non', "wp_jschat"); ?>
            </label>
        </p>
        <div class="submit">
            <input type="submit" name="update_wp_jschatSettings" value="<?php _e('Mettre à jour', 'wpjschat') ?>" /></div>
    </form>
</div>

Maintenant, notre fonction est prête, il ne nous reste plus qu'à l'afficher dans le profil utilisateur afin que les internautes loggués puissent modifier leurs options.

Ajout d'un item dans le panneau utilisateur

Il nous faut maintenant ajouter l'item dans le panneau utilisateur, via notre fonction wp_jschat_ap (déjà créée dans la création du panneau d'admin) :

add_submenu_page('profile.php', "WP jsChat options","WP jsChat options", 0, basename(__FILE__), array(&$inst_wp_jschat, 'printUsersOptionPage'));

Vous pouvez retrouver la documentation de la fonction add_submenu_page dans la documentation officielle de wordpress.
Elle est décrite comme suit :

add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function);
  • $parent_slug : l'url du menu parent
  • $page_title : le titre de la page
  • $menu_title : l'intitulé du menu que l'on souhaite
  • $capability : il s'agit des droits sous forme d'entier, dans notre cas >=0 (pour davantage d'information sur les droits d'accès : http://codex.wordpress.org/User_Levels )
  • $menu_slug : l'url du fichier à traiter
  • $function : la fonction, c'est à dire dans notre cas, un array contenant l'instance de notre classe wp_jschat et le nom de la fonction 'printUsersOptionPage'

Désormais, les utilisateurs "simples" de notre blog ont la possibilité de configurer notre plugin !

Développement d'un plugin wordpress :

  • Plugin chat Javascript pour Wordpress  

    Ce plugin de chat Javascript pour wordpress est distribué sous licence GPLv2, il est surtout développé à titre d'exemple dans le cadre d'un cours sur la création d'un plugin Wordpress.

  • Créer un plugin Wordpress 3.X  

    Créer un plugin Wordpress 3.X

  • Structure des plugins Wordpress  

    Tous les plugins wordpress seront installés dans le répertoire wp-content/plugins. Certains plugins peuvent se limiter à l'inclusion d'un seul fichier PHP, mais il est recommandé de toujours créer un dossier pour stocker les plugins....

  • Actions  

    Après avoir défini la structure de notre plugin wordpress, nous pouvons ajouter des actions, dans cet exemple, nous allons ajouter un bout de code qui va s'exécuter dans la balise <head> du blog Wordpress.

  • Filtres  

    Les filtres wordpress sont les fonctions que votre plugin peut accrocher dans le but de modifier le texte de sortie. Ce texte de sortie est généralement formaté et inséré dans une base de données, et montré à l'écran à l'utilisateur.

  • Créer le panneau d'administration d'un plugin wordpress  

    Tous les plugins devraient idéalement posséder un panneau d'administration. Créer ce panneau d'administration n'est pas très complexe, c'est donc un peu pénible de la part des auteurs de plugin de demander à leurs utilisateurs d'éditer eux-mêmes le code PHP (Ce qui n'est généralement pas une bonne idée).

  • Création d'une widget Wordpress  

    Nous allons maintenant créer une widget sous forme de plugin. Les widgets wordpress permettent d'insérer des parties de code facilement sous forme de bloc pour l'utilisateur final. Elles peuvent être ensuite ajoutées dans les barres d'outils prédéfinies selon les thèmes que vous utilisez.

  • Plugin - créer un panneau utilisateur  

    Il peut y avoir des situations où les utilisateurs peuvent être amenés à gérer leurs propres paramètres pour votre plugin : dans le cas de notre projet de chat Javascript, nous allons permettre d'une part aux utilisateur d'afficher ou non le chat, et d'utiliser les smileys ou non.

  • Installation/Désinstallation base de données | plugin Wordpress  

    Maintenant que nous savons créer des panneaux d'administration et des panneaux utilisateurs, nous allons attaquer l'accès au model : en interagissant avec la base de données. C'est une partie très importante du tutoriel wordpress, car lorsque l'on écrit un plugin, on a dans la majorité des cas besoin de stocker des données dans une base.

  • Traitement et affichage des requêtes dans base de données wordpress  

    C'est bien joli d'avoir nos tables dans base de données, maintenant, nous allons afficher les résultats de nos insertions.

  • Inclure les fichiers Javascript dans le header  

    Dans le cadre de notre application, nous aurons besoin d'inclure des fichiers Javascript dans le header des pages de notre blog Wordpress. Nous pourrions bien entendu le faire en ajoutant sauvagement du code HTML au fichier de template, mais on va éviter :)

  • Inclure les feuilles de style CSS  

    De la même manière que nous avons inclut les scripts Javascript dans le header de notre blog wordpress, nous allons maintenant inclure la feuille de style CSS de notre plugin wp_jschat. Nous allons également placer cette inclusion dans la méthode addHeaderCode() de notre classe principale créée lors de l'article sur les actions wordpress.

  • Ajax et les plugins Wordpress  

    Ajax est un protocole qui permet d'envoyer des requêtes http à partir de Javascript, si vous n'êtes pas familier avec ce protocole, vous pouvez en savoir plus sur cet article sur Ajax xmlHttpRequest.

  • Internationalisation du plugin  

    Depuis le début de cette suite d'articles, nous utilisons systématiquement les fonctions e() et __() pour afficher du texte. Nous l'avions déjà évoqué au cours d'articles précédents : c'est dans le but d'internationaliser notre plugin. Tous les textes pourrons ainsi être traduits par les utilisateurs de votre plugin dans des fichiers de langue.

  • Création de shortcode/bbcode Wordpress  

    Nous pouvons déjà créer des pages personnalisées grâce aux filtres wordpress, cependant, dans le cadre de notre plugin, il peut être intéressant d'ajouter des fenêtres de chat dans les pages de notre blog.

  • Distribuer un plugin Wordpress  

    Maintenant que votre plugin fonctionne, il a peut être vocation à être redistribué à la communauté ! Pour cela, rien de plus simple, cet article a vocation à vous expliquer comment vous y prendre.

Partagez cet article !

  • Delicious
  • Stumbleupon
  • Digg
  • Facebook
  • Google
  • Linkedin
  • Yahoo Buzz
  • Twitter
Vous avez apprécié cet article ?

Commentaires S'abonner au flux RSS des commentaires

Ajouter un commentaire

Les commentaires sont tous validés par un modérateur, votre commentaire n'apparaît pas directement sur le site.
Aucun support n'est assuré ici, vous pouvez néanmoins laisser vos remarques et critiques sur l'article, les points de vue pertinents sont toujours les bienvenus.