WordPress : Création d’un plugin permettant d’ajouter un shortcode

Voici ci-dessous le code très simple d’un plugin wordpress.
Celui-ci permet d’utiliser un nouveau shortcode dans le système wordpress.
Dans le cas présent il va simplement afficher la liste des xx derniers utilisateurs inscrit sur le site.

Pour l’exemple le plugin s’appelle « Mon shortcode ». Il suffit de créer le fichier php « mon-shortcode.php » avec le code ci dessous.
La pratique veut que l’on place ce fichier dans un dossier du même nom « mon-shortcode », dossier à placer bien entendu dans le dossier des plugins de wordpress.
La dernière fonction présenté permet d’ajouter une fichier de mise en page et de traitement javascript. Il faut bien sur les ajouter dans ce même dossier pour qu’il soient correctement appelés.

/*
  Plugin Name: Mon shortcode
  Description: Shortcode permettant d'afficher les derniers utilisateurs inscrits. Shortcode à utiliser sur une page : [mon-shortcode nbusers="xx"]
  Version: 0.1
  Author: Numa BORD
 */


class MonShortcode {

    public function __construct() {
        add_shortcode('mon-shortcode', array($this, 'shortcode_mon_shortcode'));
        add_action('wp_enqueue_scripts', array($this, 'mon_shortcode_scripts'));
    }

    /**
     * Fonction de traitement du shortcode, à utiliser comme ci-dessous
     *
     * [mon-shortcode nbusers="xx"]
     */

    public function shortcode_mon_shortcode($atts) {
        //init
        $default = array();
        $default['nbusers'] = 10;
        //controle des parametres passé dans le shortcode
        if (isset($atts['nbusers'])) {
            $atts['nbusers'] = (int) $atts['nbusers'];
        }
        //configuration definis par les parametre par defaut et ceux passé dans le shortcode
        $config = shortcode_atts($default, $atts);
        //
        $list = '<div class="mon-shortcode">';
        $users = get_users(array('number' => $config['nbusers'], 'orderby' => 'registered', 'order' => 'DESC'));
        foreach ($users as $user) {
            $list .= '<div class="single-user">';
            //avatar
            $list .= '<div class="avatar-glob">';
            $list .= get_avatar($user->user_email, 60);
            $list .= '</div>'; //avatar-glob
            $list .= '<div class="info-glob">';
            //pseudo
            $list .= '<div class="title">';
            $list .= $user->display_name;
            $list .= '</div>'; //title
            //date d'inscription
            $list .= '<div class="date">';
            $registrered = new \DateTime($user->user_registered);
            $list .= $registrered->format('d/m/Y H:i:s');
            $list .= '</div>'; //date
            //
            $list .= '</div>'; //info glob
            $list .= '</div>'; //single user
        }
        $list .= '</div>';
        return $list;
    }

    /**
     * Appel des fichiers js/css necessaires (facultatif)
     */

    public function mon_shortcode_scripts() {
        global $post;
        if (is_a($post, 'WP_Post') && has_shortcode($post->post_content, 'mon-shortcode')) {
            wp_enqueue_style('mon-shortcode-style', plugins_url('/mon-shortcode/style.css'));
            wp_enqueue_script('mon-shortcode-js', plugins_url('/mon-shortcode/script.js'), array('jquery'));
        }
    }

}

new MonShortcode();

Avec quelques améliorations, on peux obtenir un shortcode permettant d’afficher les derniers inscrits en popup comme sur cette page de démonstration

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *