SlideShare una empresa de Scribd logo
1 de 26
Création d’extensions WordPress
   TP1: Hello World

   TP2: Compteur de visites

   TP3: Création du bouton « j’aime » de Facebook
 Connaître     les bases des langages PHP

 Être
     familiarisé avec les fonctions WordPress
 (Hooks: Actions et filtres)

 Anglais   
 Les Actions: Les actions sont les crochets que
  le noyau de WordPress lance à des points
  spécifiques en cours d'exécution, ou lorsque
  des événements spécifiques se produisent
  (action). Votre plugin peut spécifier que l'une
  ou plusieurs de ses fonctions PHP sont
  exécutés à ces points.
 Syntaxe:
 add_action('nom_hook', ‘nom_fonction', [priorité], [args]);
 Les filtres: Les filtres sont les crochets que
  WordPress lance pour modifier le texte de
  divers types, avant de l'ajouter à la base de
  données ou de l'envoyer au navigateur. Votre
  plugin peut spécifier que l'une ou plusieurs
  de ses fonctions PHP est exécuté pour
  modifier le contenu du texte ou des données.
 Syntaxe:
 add_filter('nom_hook', 'votre_filtre', [priorité], [args]);
 Choisir   un nom unique pour votre extensions.
 Les
    fichiers de l’extensions sont dans le
 répertoire wp-content/plugins/ de
 Wordpress.
 Encodez    toujours vos fichiers en UTF-8
 Testeztoujours l’extension avec la dernière
 version de WordPress.
 Toute
      extension doit avoir un header de la
 forme suivante:
 <?php
 /*
 Plugin Name: Nom de l’extension
 Plugin URI: http://lien_pour_la_description
 Description: Une brève description de l’extension
 Version: 1.0
 Author: Nom de l’auteur
 Author URI: http://lien_de_l_auteur_de_l_extension
 License: Nom de la license, ex. GPL2
 */
 ?>
 Créez un fichier helloworld.php dans le
  répertoire wp-content/plugins/helloworld/ de
  Wordpress et ajoutez votre header.
 Ajoutez la fonction suivante:


    function hello_world($content){
             if(is_single()){
                       $text = "<p>Hello World</p>";
             return $text.$content;
             } else {
                       return $content;
             }
    }
    add_action('the_content', 'hello_world');
Explication:
   Notre "hook" va accrocher notre
    fonction hello_world au contenu de l'article/page.
    Nous récupérons le contenu de l'article/page en
    argument ($content) et nous créons une
    variable $text contenant un simple paragraphe en
    HTML.
   On souhaite afficher notre texte que sur les articles
    et pas autre chose comme les pages, on fait une
    condition à l'aide de is_single() qui permet de
    déterminer si on est sur une page d'article ou pas.
   Activez votre extensions sur Wordpress, et vérifiez
    vos pages du site.
   Et si on paramétrais le message dans la console Wordpress?
   Pour cela, remplacez la ligne $text = "<p>Hello World</p>"; par
    $text = "<p>".get_option('hello_world_data')."</p>"; du fichier
    helloworld.php
   Ajoutez ce code en bas du fichier

    function hello_world_admin_menu() {
          add_options_page('Page Hello World', 'Menu Hello World',
          'administrator', 'nom-unique-hello-world',
          'hello_world_html_page');
    }
    function hello_world_html_page() {
               include 'hello-world.php';
    }
    if ( is_admin() ){
               add_action('admin_menu', 'hello_world_admin_menu');
    }
/* S'exécute lorsque le plugin est activé */
register_activation_hook(__FILE__,'hello_world_install');

/* S'exécute lorsque le plugin est désactivé */
register_deactivation_hook( __FILE__, 'hello_world_remove' );

function hello_world_install() {
/* Créé une champ dans la base de donnée */
add_option("hello_world_data", 'Text par default', '', 'yes');
}

function hello_world_remove() {
/* Supprime le champ de la base */
delete_option('hello_world_data');
}
Explication:
 La fonction add_options_page ajoute un élément
  au menu « Réglages »
 La fonction is_admin() retourne true si on est
  dans la console d’administration Wordpress.
 Les fonctions add_option et delete_option
  Ajoute/supprime un enregistrement à la table
  wp_options de Wordpress
 Pour la fonction hello_world_html_page(), créez
  un fichier hello-world-form.php et ajoutez le
  code suivant pour créer le formulaire dans le
  menu de la console Wordpress
<div><h2>Hello World Options</h2>
<form method="post" action="options.php">
<?php wp_nonce_field('update-options'); ?>
<table width="510">
<tr valign="top">
<th width="92" scope="row">Entrez votre texte</th>
<td width="406">
<input name="hello_world_data" type="text" id="hello_world_data"
value="<?php echo get_option('hello_world_data'); ?>" />
(ex. Hello World)</td></tr>
</table>
<input type="hidden" name="action" value="update" />
<input type="hidden" name="page_options" value="hello_world_data"
/>
<p><input type="submit" value="<?php _e('Enregistrer') ?>" /></p>
</form>
</div>
 Créez un fichier compteur.php sur le
  répertoire wp-content/plugins/compteur/ et
  ajoutez votre Header.
 Collez ce code à votre fichier compteur.php
    function compteur_install(){
      global $wpdb;
      $table = $wpdb->prefix."compteur_visite";
      $structure = "CREATE TABLE $table (id INT(9) NOT NULL AUTO_INCREMENT,
              nom_compteur VARCHAR(80) NOT NULL,
              visites INT(9) DEFAULT 0,
              UNIQUE KEY id (id) );";
      $wpdb->query($structure);
      // Inserer dans la base
      $wpdb->query("INSERT INTO $table(nom_compteur)
      VALUES('Compteur de visite')");
    }
    add_action('activate_compteur/compteur.php', 'compteur_install');
function compteur() {
  global $wpdb;
  $browser_name = $_SERVER['HTTP_USER_AGENT'];
  $compteurs = $wpdb->get_results("SELECT * FROM “
 .$wpdb->prefix."compteur_visite");
  foreach($compteurs as $compteur) {
    $wpdb->query("UPDATE ".$wpdb->prefix."compteur_visite
            SET visites = visites+1 WHERE id = ".$compteur->id);
            break; }
}
add_action('wp_footer', 'compteur');
function compteur_menu() {
    global $wpdb;
   include 'compteur-admin.php';
}
function compteur_admin_actions() {
   add_options_page("Compteur de visite", "Compteur de visite", 1,
"compteur-de-visite", "compteur_menu");
}
add_action('admin_menu', 'compteur_admin_actions');
/* Supprimer la table lors de la désactivation du plugin */
    function table_remove(){
       global $wpdb;
      $table = $wpdb->prefix."compteur_visite";
      $wpdb->query("DROP TABLE $table");
    }
    register_deactivation_hook( __FILE__, 'table_remove' );


Explication:
   La fonction compteur_install créée une table et y insére
    un enregistrement et on l’accroche au code Wordpress
    avec le Hook
    add_action(‘activate_nomduplugin/fichierduplugin.php’,’n
    om_fonction’) pour l’exécuter lors de l’activation de
    l’extension.
   La fonction compteur met à jour le nombre de visites pour
    chaque affichage du footer en utilisant le Hook wp_footer
 La  fonction compteur_admin_actions est
  utilisée dans le Hook ‘admin_menu’ pour
  ajouter un élément au menu Réglages de
  Wordpress avec nom de fenêtre ‘Compteur
  de visite’, nom du menu ‘Compteur de
  visite’, accessible par ‘administrator’,
  l’identifiant du menu est ‘compteur-de-
  visite’ et qui exécute la fonction
  ‘compteur_menu’.
 La fonction compteur_menu appelle le
  fichier compteur-admin.php pour afficher la
  page du menu qui contient le code suivant:
<?php
if ($_GET['compteur']=='reset') {
$myrequest=("UPDATE ".$wpdb->prefix."compteur_visite SET visites = 0");
$wpdb->query($myrequest);
?>
<div id="message" class="updated fade">
           Compteur de visite <strong>réinitialisé</strong>.
</div>
<?php } ?>
<div class="wrap">
           <h2>Compteur de visite</h2>
           <?php
                     global $current_user;
                     echo 'Bonjour ' . $current_user->user_login . "<br/>";
                     echo '<br/>';
           ?>
<?php
          $results = $wpdb->get_results("SELECT * FROM ".$wpdb-
>prefix."compteur_visite");
          foreach($results as $result) {
                     echo "Le nom du compteur est: ".$result-
>nom_compteur."<br/>";
                     echo "Le nombre de visite est: ".$result->visites;
                     echo "<br/>";
          }
          ?>
          <br/>
          <a href="?page=<?php echo $_GET['page']; ?>&compteur=reset">
                     Réinitialiser le compteur
          </a>
</div>
Explication:
 Le <div class="wrap"> pour avoir un affichage
  dans le même style que les pages de la
  console Wordpress.
 <div id="message"> pour afficher les
  messages dans le même style de la console
  Wordpress.
 Et enfin le dernier Hook du fichier
  compteur.php register_deactivation_hook
  qui sera exécuté lorsque vous désactivez
  votre extensions pour supprimer la table
  préalablement créée.
 Créez un fichier moi_jaime_facebook.php où
  « moi » sont vos initiales (Pour ne pas avoir
  le même nom que d’autres extensions
  Wordpress) et ajoutez votre Header.
 Ajouter le code d’importation des fichier JS
  de facebook tout en bas de votre fichier:

    <div id="fb-root"></div>
    <script>(function(d, s, id) {
      var js, fjs = d.getElementsByTagName(s)[0];
      if (d.getElementById(id)) {return;}
      js = d.createElement(s); js.id = id;
      js.src = "//connect.facebook.net/fr_FR/all.js#xfbml=1";
      fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));</script>
 L’API  de facebook nous fourni des outils pour
  générer le code de notre bouton « j’aime »
  http://developers.facebook.com/docs/refer
  ence/plugins/like/ grâce à cet outils,
  générez votre code.
 Remplacez le lien de data-href par la
  fonction the_permalink() de Wordpress (pour
  récupérer l’URL de la page actuelle).
 Utilisez le Hook ‘the_content’ qu’on à déjà
  utiliser dans le 1er TP pour afficher ce bouton
  dans toutes les pages de vos articles.
   Solution:
    $mylink=the_permalink();
    function jaime_facebook($content){
      if(is_single()){
        $text = "<div class="fb-like" data-href="$mylink" data-send="false"
    data-layout="box_count" data-width="450" data-show-
    faces="true"></div>n";
        return $text.$content;
      }
      else{
        return $content;
      }
    }
    add_action('the_content', 'jaime_facebook');


   Remarque: les boutons de partage de réseaux sociaux ne
    fonctionne pas en local, testez votre bouton en ligne.

Más contenido relacionado

Destacado

La Population Internet Chinoise en Statistiques
La Population Internet Chinoise en StatistiquesLa Population Internet Chinoise en Statistiques
La Population Internet Chinoise en Statistiqueslatoilerouge
 
La mob, ça va? Politique et mobilisation, c’est possible!
La mob, ça va? Politique et mobilisation, c’est possible!La mob, ça va? Politique et mobilisation, c’est possible!
La mob, ça va? Politique et mobilisation, c’est possible!La Marie Debout, Centre de femmes
 
Power point projet carrières
Power point projet carrièresPower point projet carrières
Power point projet carrièresisaleb11
 
Créer votre site portfolio en 2 heures
Créer votre site portfolio en 2 heuresCréer votre site portfolio en 2 heures
Créer votre site portfolio en 2 heurestabFolio
 
Power point projet carrières
Power point projet carrièresPower point projet carrières
Power point projet carrièresisaleb11
 
MailInBlack Footprint, c'est quoi ?
MailInBlack Footprint, c'est quoi ?MailInBlack Footprint, c'est quoi ?
MailInBlack Footprint, c'est quoi ?crochemib
 
Vehicule électriques et numérique : une collaboration attendue
Vehicule électriques et numérique : une collaboration attendueVehicule électriques et numérique : une collaboration attendue
Vehicule électriques et numérique : une collaboration attendueNiji
 
Le multicanal, une nécessité du marché - Mars 2013
Le multicanal, une nécessité du marché - Mars 2013Le multicanal, une nécessité du marché - Mars 2013
Le multicanal, une nécessité du marché - Mars 2013Luu Hong Thu Gonnet-Do
 
Les "nouveaux" challenge de l'UX Agile / Jeremie Chaine / FLUPA UX DAY / Pari...
Les "nouveaux" challenge de l'UX Agile / Jeremie Chaine / FLUPA UX DAY / Pari...Les "nouveaux" challenge de l'UX Agile / Jeremie Chaine / FLUPA UX DAY / Pari...
Les "nouveaux" challenge de l'UX Agile / Jeremie Chaine / FLUPA UX DAY / Pari...jchaine
 
Télétravail mode d'emploi
Télétravail mode d'emploiTélétravail mode d'emploi
Télétravail mode d'emploiHélène Pouille
 
P21 magnitudes
P21 magnitudesP21 magnitudes
P21 magnitudesDavidSPZGZ
 
Au service du patrimoine privé et professionnel des entrepreneurs
Au service du patrimoine privé et professionnel des entrepreneursAu service du patrimoine privé et professionnel des entrepreneurs
Au service du patrimoine privé et professionnel des entrepreneursLe Camping by Silicon Sentier
 
Compakblue – Elimination des matières en suspension et polluants associés par...
Compakblue – Elimination des matières en suspension et polluants associés par...Compakblue – Elimination des matières en suspension et polluants associés par...
Compakblue – Elimination des matières en suspension et polluants associés par...Degrémont
 

Destacado (20)

La Population Internet Chinoise en Statistiques
La Population Internet Chinoise en StatistiquesLa Population Internet Chinoise en Statistiques
La Population Internet Chinoise en Statistiques
 
La mob, ça va? Politique et mobilisation, c’est possible!
La mob, ça va? Politique et mobilisation, c’est possible!La mob, ça va? Politique et mobilisation, c’est possible!
La mob, ça va? Politique et mobilisation, c’est possible!
 
Power point projet carrières
Power point projet carrièresPower point projet carrières
Power point projet carrières
 
Stats sites tcb 2014
Stats sites tcb 2014Stats sites tcb 2014
Stats sites tcb 2014
 
Le cas Meccano FX
Le cas Meccano FXLe cas Meccano FX
Le cas Meccano FX
 
2013 Matinée du personnel saisonnier
2013 Matinée du personnel saisonnier2013 Matinée du personnel saisonnier
2013 Matinée du personnel saisonnier
 
Créer votre site portfolio en 2 heures
Créer votre site portfolio en 2 heuresCréer votre site portfolio en 2 heures
Créer votre site portfolio en 2 heures
 
Certificates - Elliot
Certificates - ElliotCertificates - Elliot
Certificates - Elliot
 
Power point projet carrières
Power point projet carrièresPower point projet carrières
Power point projet carrières
 
Programmation de l'automne 2012
Programmation de l'automne 2012Programmation de l'automne 2012
Programmation de l'automne 2012
 
MailInBlack Footprint, c'est quoi ?
MailInBlack Footprint, c'est quoi ?MailInBlack Footprint, c'est quoi ?
MailInBlack Footprint, c'est quoi ?
 
Electromagnetic
ElectromagneticElectromagnetic
Electromagnetic
 
Vehicule électriques et numérique : une collaboration attendue
Vehicule électriques et numérique : une collaboration attendueVehicule électriques et numérique : une collaboration attendue
Vehicule électriques et numérique : une collaboration attendue
 
Le multicanal, une nécessité du marché - Mars 2013
Le multicanal, une nécessité du marché - Mars 2013Le multicanal, une nécessité du marché - Mars 2013
Le multicanal, une nécessité du marché - Mars 2013
 
Programme FeistiF
Programme FeistiFProgramme FeistiF
Programme FeistiF
 
Les "nouveaux" challenge de l'UX Agile / Jeremie Chaine / FLUPA UX DAY / Pari...
Les "nouveaux" challenge de l'UX Agile / Jeremie Chaine / FLUPA UX DAY / Pari...Les "nouveaux" challenge de l'UX Agile / Jeremie Chaine / FLUPA UX DAY / Pari...
Les "nouveaux" challenge de l'UX Agile / Jeremie Chaine / FLUPA UX DAY / Pari...
 
Télétravail mode d'emploi
Télétravail mode d'emploiTélétravail mode d'emploi
Télétravail mode d'emploi
 
P21 magnitudes
P21 magnitudesP21 magnitudes
P21 magnitudes
 
Au service du patrimoine privé et professionnel des entrepreneurs
Au service du patrimoine privé et professionnel des entrepreneursAu service du patrimoine privé et professionnel des entrepreneurs
Au service du patrimoine privé et professionnel des entrepreneurs
 
Compakblue – Elimination des matières en suspension et polluants associés par...
Compakblue – Elimination des matières en suspension et polluants associés par...Compakblue – Elimination des matières en suspension et polluants associés par...
Compakblue – Elimination des matières en suspension et polluants associés par...
 

Más de Chi Nacim

Création de themes WordPress
Création de themes WordPressCréation de themes WordPress
Création de themes WordPressChi Nacim
 
Sécurité WordPress
Sécurité WordPressSécurité WordPress
Sécurité WordPressChi Nacim
 
WordPress en tant que CMS
WordPress en tant que CMSWordPress en tant que CMS
WordPress en tant que CMSChi Nacim
 
Themes WordPress
Themes WordPressThemes WordPress
Themes WordPressChi Nacim
 
Développement d’extensions WordPress
Développement d’extensions WordPressDéveloppement d’extensions WordPress
Développement d’extensions WordPressChi Nacim
 
Conversion de template HTML en thème WordPress
Conversion de template HTML en thème WordPressConversion de template HTML en thème WordPress
Conversion de template HTML en thème WordPressChi Nacim
 
WordPress : optimisation pour le référencement
WordPress : optimisation pour le référencement WordPress : optimisation pour le référencement
WordPress : optimisation pour le référencement Chi Nacim
 
Installation et configuration wordpress
Installation et configuration wordpressInstallation et configuration wordpress
Installation et configuration wordpressChi Nacim
 
Optimiser WordPress
Optimiser WordPressOptimiser WordPress
Optimiser WordPressChi Nacim
 
Creation de-themes-wp
Creation de-themes-wpCreation de-themes-wp
Creation de-themes-wpChi Nacim
 

Más de Chi Nacim (10)

Création de themes WordPress
Création de themes WordPressCréation de themes WordPress
Création de themes WordPress
 
Sécurité WordPress
Sécurité WordPressSécurité WordPress
Sécurité WordPress
 
WordPress en tant que CMS
WordPress en tant que CMSWordPress en tant que CMS
WordPress en tant que CMS
 
Themes WordPress
Themes WordPressThemes WordPress
Themes WordPress
 
Développement d’extensions WordPress
Développement d’extensions WordPressDéveloppement d’extensions WordPress
Développement d’extensions WordPress
 
Conversion de template HTML en thème WordPress
Conversion de template HTML en thème WordPressConversion de template HTML en thème WordPress
Conversion de template HTML en thème WordPress
 
WordPress : optimisation pour le référencement
WordPress : optimisation pour le référencement WordPress : optimisation pour le référencement
WordPress : optimisation pour le référencement
 
Installation et configuration wordpress
Installation et configuration wordpressInstallation et configuration wordpress
Installation et configuration wordpress
 
Optimiser WordPress
Optimiser WordPressOptimiser WordPress
Optimiser WordPress
 
Creation de-themes-wp
Creation de-themes-wpCreation de-themes-wp
Creation de-themes-wp
 

Wordpress DAY - création d'extensions

  • 2. TP1: Hello World  TP2: Compteur de visites  TP3: Création du bouton « j’aime » de Facebook
  • 3.  Connaître les bases des langages PHP  Être familiarisé avec les fonctions WordPress (Hooks: Actions et filtres)  Anglais 
  • 4.  Les Actions: Les actions sont les crochets que le noyau de WordPress lance à des points spécifiques en cours d'exécution, ou lorsque des événements spécifiques se produisent (action). Votre plugin peut spécifier que l'une ou plusieurs de ses fonctions PHP sont exécutés à ces points.  Syntaxe: add_action('nom_hook', ‘nom_fonction', [priorité], [args]);
  • 5.  Les filtres: Les filtres sont les crochets que WordPress lance pour modifier le texte de divers types, avant de l'ajouter à la base de données ou de l'envoyer au navigateur. Votre plugin peut spécifier que l'une ou plusieurs de ses fonctions PHP est exécuté pour modifier le contenu du texte ou des données.  Syntaxe: add_filter('nom_hook', 'votre_filtre', [priorité], [args]);
  • 6.  Choisir un nom unique pour votre extensions.  Les fichiers de l’extensions sont dans le répertoire wp-content/plugins/ de Wordpress.  Encodez toujours vos fichiers en UTF-8  Testeztoujours l’extension avec la dernière version de WordPress.
  • 7.  Toute extension doit avoir un header de la forme suivante: <?php /* Plugin Name: Nom de l’extension Plugin URI: http://lien_pour_la_description Description: Une brève description de l’extension Version: 1.0 Author: Nom de l’auteur Author URI: http://lien_de_l_auteur_de_l_extension License: Nom de la license, ex. GPL2 */ ?>
  • 8.
  • 9.  Créez un fichier helloworld.php dans le répertoire wp-content/plugins/helloworld/ de Wordpress et ajoutez votre header.  Ajoutez la fonction suivante: function hello_world($content){ if(is_single()){ $text = "<p>Hello World</p>"; return $text.$content; } else { return $content; } } add_action('the_content', 'hello_world');
  • 10. Explication:  Notre "hook" va accrocher notre fonction hello_world au contenu de l'article/page. Nous récupérons le contenu de l'article/page en argument ($content) et nous créons une variable $text contenant un simple paragraphe en HTML.  On souhaite afficher notre texte que sur les articles et pas autre chose comme les pages, on fait une condition à l'aide de is_single() qui permet de déterminer si on est sur une page d'article ou pas.  Activez votre extensions sur Wordpress, et vérifiez vos pages du site.
  • 11. Et si on paramétrais le message dans la console Wordpress?  Pour cela, remplacez la ligne $text = "<p>Hello World</p>"; par $text = "<p>".get_option('hello_world_data')."</p>"; du fichier helloworld.php  Ajoutez ce code en bas du fichier function hello_world_admin_menu() { add_options_page('Page Hello World', 'Menu Hello World', 'administrator', 'nom-unique-hello-world', 'hello_world_html_page'); } function hello_world_html_page() { include 'hello-world.php'; } if ( is_admin() ){ add_action('admin_menu', 'hello_world_admin_menu'); }
  • 12. /* S'exécute lorsque le plugin est activé */ register_activation_hook(__FILE__,'hello_world_install'); /* S'exécute lorsque le plugin est désactivé */ register_deactivation_hook( __FILE__, 'hello_world_remove' ); function hello_world_install() { /* Créé une champ dans la base de donnée */ add_option("hello_world_data", 'Text par default', '', 'yes'); } function hello_world_remove() { /* Supprime le champ de la base */ delete_option('hello_world_data'); }
  • 13. Explication:  La fonction add_options_page ajoute un élément au menu « Réglages »  La fonction is_admin() retourne true si on est dans la console d’administration Wordpress.  Les fonctions add_option et delete_option Ajoute/supprime un enregistrement à la table wp_options de Wordpress  Pour la fonction hello_world_html_page(), créez un fichier hello-world-form.php et ajoutez le code suivant pour créer le formulaire dans le menu de la console Wordpress
  • 14. <div><h2>Hello World Options</h2> <form method="post" action="options.php"> <?php wp_nonce_field('update-options'); ?> <table width="510"> <tr valign="top"> <th width="92" scope="row">Entrez votre texte</th> <td width="406"> <input name="hello_world_data" type="text" id="hello_world_data" value="<?php echo get_option('hello_world_data'); ?>" /> (ex. Hello World)</td></tr> </table> <input type="hidden" name="action" value="update" /> <input type="hidden" name="page_options" value="hello_world_data" /> <p><input type="submit" value="<?php _e('Enregistrer') ?>" /></p> </form> </div>
  • 15.
  • 16.  Créez un fichier compteur.php sur le répertoire wp-content/plugins/compteur/ et ajoutez votre Header.  Collez ce code à votre fichier compteur.php function compteur_install(){ global $wpdb; $table = $wpdb->prefix."compteur_visite"; $structure = "CREATE TABLE $table (id INT(9) NOT NULL AUTO_INCREMENT, nom_compteur VARCHAR(80) NOT NULL, visites INT(9) DEFAULT 0, UNIQUE KEY id (id) );"; $wpdb->query($structure); // Inserer dans la base $wpdb->query("INSERT INTO $table(nom_compteur) VALUES('Compteur de visite')"); } add_action('activate_compteur/compteur.php', 'compteur_install');
  • 17. function compteur() { global $wpdb; $browser_name = $_SERVER['HTTP_USER_AGENT']; $compteurs = $wpdb->get_results("SELECT * FROM “ .$wpdb->prefix."compteur_visite"); foreach($compteurs as $compteur) { $wpdb->query("UPDATE ".$wpdb->prefix."compteur_visite SET visites = visites+1 WHERE id = ".$compteur->id); break; } } add_action('wp_footer', 'compteur'); function compteur_menu() { global $wpdb; include 'compteur-admin.php'; } function compteur_admin_actions() { add_options_page("Compteur de visite", "Compteur de visite", 1, "compteur-de-visite", "compteur_menu"); } add_action('admin_menu', 'compteur_admin_actions');
  • 18. /* Supprimer la table lors de la désactivation du plugin */ function table_remove(){ global $wpdb; $table = $wpdb->prefix."compteur_visite"; $wpdb->query("DROP TABLE $table"); } register_deactivation_hook( __FILE__, 'table_remove' ); Explication:  La fonction compteur_install créée une table et y insére un enregistrement et on l’accroche au code Wordpress avec le Hook add_action(‘activate_nomduplugin/fichierduplugin.php’,’n om_fonction’) pour l’exécuter lors de l’activation de l’extension.  La fonction compteur met à jour le nombre de visites pour chaque affichage du footer en utilisant le Hook wp_footer
  • 19.  La fonction compteur_admin_actions est utilisée dans le Hook ‘admin_menu’ pour ajouter un élément au menu Réglages de Wordpress avec nom de fenêtre ‘Compteur de visite’, nom du menu ‘Compteur de visite’, accessible par ‘administrator’, l’identifiant du menu est ‘compteur-de- visite’ et qui exécute la fonction ‘compteur_menu’.  La fonction compteur_menu appelle le fichier compteur-admin.php pour afficher la page du menu qui contient le code suivant:
  • 20. <?php if ($_GET['compteur']=='reset') { $myrequest=("UPDATE ".$wpdb->prefix."compteur_visite SET visites = 0"); $wpdb->query($myrequest); ?> <div id="message" class="updated fade"> Compteur de visite <strong>réinitialisé</strong>. </div> <?php } ?> <div class="wrap"> <h2>Compteur de visite</h2> <?php global $current_user; echo 'Bonjour ' . $current_user->user_login . "<br/>"; echo '<br/>'; ?>
  • 21. <?php $results = $wpdb->get_results("SELECT * FROM ".$wpdb- >prefix."compteur_visite"); foreach($results as $result) { echo "Le nom du compteur est: ".$result- >nom_compteur."<br/>"; echo "Le nombre de visite est: ".$result->visites; echo "<br/>"; } ?> <br/> <a href="?page=<?php echo $_GET['page']; ?>&compteur=reset"> Réinitialiser le compteur </a> </div>
  • 22. Explication:  Le <div class="wrap"> pour avoir un affichage dans le même style que les pages de la console Wordpress.  <div id="message"> pour afficher les messages dans le même style de la console Wordpress.  Et enfin le dernier Hook du fichier compteur.php register_deactivation_hook qui sera exécuté lorsque vous désactivez votre extensions pour supprimer la table préalablement créée.
  • 23.
  • 24.  Créez un fichier moi_jaime_facebook.php où « moi » sont vos initiales (Pour ne pas avoir le même nom que d’autres extensions Wordpress) et ajoutez votre Header.  Ajouter le code d’importation des fichier JS de facebook tout en bas de votre fichier: <div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/fr_FR/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script>
  • 25.  L’API de facebook nous fourni des outils pour générer le code de notre bouton « j’aime » http://developers.facebook.com/docs/refer ence/plugins/like/ grâce à cet outils, générez votre code.  Remplacez le lien de data-href par la fonction the_permalink() de Wordpress (pour récupérer l’URL de la page actuelle).  Utilisez le Hook ‘the_content’ qu’on à déjà utiliser dans le 1er TP pour afficher ce bouton dans toutes les pages de vos articles.
  • 26. Solution: $mylink=the_permalink(); function jaime_facebook($content){ if(is_single()){ $text = "<div class="fb-like" data-href="$mylink" data-send="false" data-layout="box_count" data-width="450" data-show- faces="true"></div>n"; return $text.$content; } else{ return $content; } } add_action('the_content', 'jaime_facebook');  Remarque: les boutons de partage de réseaux sociaux ne fonctionne pas en local, testez votre bouton en ligne.