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 !












Commentaires