Ceci est une ancienne révision du document !


WordPress

Créer son plugin 1

Il s'agit ici de créer un simple plugin Hello World

L'enveloppe

Pour créer mon superbe plugin HelloWorld, il faut déjà lui créer un répertoire hello-world dans le répertoire des plugins et un fichier hello-world.php avec un entête-commentaire contenant les informations du plugin : le nom du plugin, son auteur, description du plugin, version …etc

|- wp-admin
|- wp-content 
      |- cache
      |- languages
      |- plugins
            |- contact-form-7
            |- hello-world
                  |- hello-world.php

<?php
/*
 * Plugin Name: Hello World
 * Plugin URI: http://uri-plugin/si/existe
 * Description: Un plugin qui écrit Hello World
 * Author: Elisabeth Pointal
 * Author URI: http://elisabeth.pointal.org/
 * Text Domain: hello
 * Domain Path: /languages/
 * Version: 1.0.0
 * License: GPL2
 */

  1. Le nom du fichier n'est pas important, ce sont les commentaires en entête qui sont chargées par Wordpress.
  2. Si le plugin est très léger et constitué d'un unique fichier, il n'est pas nécessaire de lui créer un répertoire, le fichier est suffisant.
  3. Les informations Text Domain et Domain Path sont utilisées pour la traduction du plugin.
  4. Les informations d'url et licence sont utiles pour la publication

Et c'est suffisant, j'ai créé un plugin. Il apparaît bien dans les extensions de mon application Wordpress, il ne me reste qu'à l'activer.Extension Wordpress Mon plugin hello World

Une action minimaliste

Pour que mon plugin fasse un peu quelque chose, je décide qu'il ajoute “hello World !!” devant le titre des posts.

<?php
/*
 * Plugin Name: Hello World
 * Plugin URI: http://uri-plugin/si/existe
 * Description: Un plugin qui écrit Hello World
 * Author: Elisabeth Pointal
 * Author URI: http://elisabeth.pointal.org/
 * Text Domain: hello
 * Domain Path: /languages/
 * Version: 1.0.0
 * License: GPL2
 */
// Ajoute Hello World devant $content
function print_hello_before_title($content){
    return " Hello World !! " . $content;
}

add_filter('the_title','print_hello_before_title');

Shortcode

Si on veut pouvoir insérer notre superbe «Hello World!!» n'importe où dans nos posts, il faut créer un shortcode.


function hello_world_shortcode(){
    echo "<div>Hello World !!</div>";
}

if(!is_admin()){
    //on ajoute un shortcode appelé helloworld, qui appelle la fonction hello_world_shortcode
    add_shortcode('helloworld', 'hello_world_shortcode');
}

Dans l'édition d'un article, il suffit de taper [helloworld], pour qu'il soit remplacer par <div>Hello World !!</div>.
On peut aussi faire passer des arguments à la fonction hello_world_shortcode.


function hello_world_shortcode($options){
    $style = "";
    $textafter = "";
    //couleur du texte
    if(isset($options['color'])){
       $style = ' style="color:'.$options['color'].';"';
    }
    //Texte après hello World
    if(isset($options['textafter'])){
        $textafter = "<br />".$options['textafter'];
    }
    echo "<div".$style.">Hello World !!".$textafter."</div>";
}

if(!is_admin()){
    add_shortcode('helloworld', 'hello_world_shortcode');
}

Dans l'édition de mon article, je tape alors [helloworld color=“red”] ou autre …

Edition d'un article en utilisant mon shortcode helloworld :  Edition d'un article avec des shortcodes
Vue de l'article avec des shortcodes helloworld : Résultats de l'article avec des shortcodes helloworld

css et javascript

Comme pour le thème, on utilise wp_enqueue_script et wp_enqueue_style pour charger respectivement les fichiers javascript et css.

   //url du dossier du plugin
   define('HELLO_DIR_URL', plugin_dir_url(__FILE__));
  //insertion de mon fichier hello.js dépendant de jquery, sans numéro de version,  en bas de page
  wp_register_script('hello-js', HELLO_DIR_URL . 'js/hello.js', array('jquery'), null,true);
  //insertion du fichier hello.css, indépendant, sans numéro de version
  wp_enqueue_style('hello-css', HELLO_DIR_URL . 'css/hello.css',array(), null);
         

On souhaite, bien entendu, ne charger ces fichiers que s'ils sont nécessaires.

structure plugin


Elisabeth Pointal 14/05/2016 15:17 —— Créer son plugin 2