WordPress est la plus grande plateforme de blogs disponible sur Internet aujourd'hui; et avec la sortie officielle de la version trois, cela ne fera que grandir. En tant que tel, nous allons apprendre les tenants et les aboutissants du développement de plugins WordPress, à partir de la création de notre premier plugin simple, "Simple Optimization".
Ce tutoriel va supposer que vous avez au moins la compréhension de PHP et de la syntaxe WordPress pour les débutants. Bien que nous couvrions tout, quelques connaissances préalables vous aideront à saisir les concepts beaucoup plus facilement. Je suppose également que vous avez configuré le blog WP et que vous êtes prêt à partir..
La première étape, lors de l'écriture d'un plugin WP, consiste à déterminer tout ce que vous voulez qu'il fasse. Comme c'est notre premier plugin, nous ne ferons rien de trop radical. Créons quelque chose qui accélérera notre blog; nos pages seront rendues plus rapidement, et nous ferons également un peu de référencement pour améliorer notre rang de recherche et notre facilité de recherche.
"Créez toujours une liste de ce que vous voulez que votre plugin fasse réellement avant d'écrire du code!"
Pour commencer, accédez au dossier de vos plugins ("/ wp-content / plugins /") et créez un nouveau dossier. Nous appellerons notre "optimisation simple". Ensuite, dans ce dossier, nous devrons créer deux fichiers. Le premier sera le fichier de plugin actuel (nommé "main.php") et le second sera le README obligatoire ("readme.txt"). Nous allons laisser readme.txt vide pour le moment; alors ouvrez main.php dans votre éditeur de texte préféré et copiez-le dans le code ci-dessous.
Ce texte correspond au minimum nécessaire pour qu'un plugin apparaisse dans le répertoire des plugins WordPress. Vous aurez évidemment besoin de remplir chaque partie comme bon vous semble.
Les deux premières fonctionnalités que nous allons implémenter seront également les plus simples. Par défaut, WordPress ajoute plusieurs méta-tags à la liste.
section de votre blog, mais le fait est que ces méta-tags n’ont absolument aucune valeur; nous allons donc simplement empêcher WordPress de les ajouter. À chaque fois que WordPress effectue une action, il s’appelle soit un filtre ou un action, et nous pouvons soit supprimer, soit manipuler ces filtres et actions (vous pouvez trouver une liste de tous les filtres ici et de toutes les actions ici). Dans ce cas, nous voulons supprimer les différentes actions qui ajoutent ces méta-tags.Pour ce faire, nous utilisons une fonction très simple appelée "remove_action ('action', 'fonction')". Cette fonction supprimera la fonction déclarée dans le deuxième paramètre de l'action, le premier paramètre.
// Nettoyer wp_head // Supprimer un lien de découverte vraiment simple remove_action ('wp_head', 'rsd_link'); // Supprimer le lien Windows Live Writer remove_action ('wp_head', 'wlwmanifest_link'); // Supprime le numéro de version remove_action ('wp_head', 'wp_generator');
Le même principe s’applique exactement aux deux filtres que nous allons supprimer:
// Supprimer les guillemets bouclés remove_filter ('the_content', 'wptexturize'); remove_filter ('comment_text', 'wptexturize'); // Autorise le HTML dans les profils utilisateur remove_filter ('pre_user_description', 'wp_filter_kses');
Maintenant que nous avons éliminé ce fardeau, assurons-nous que notre blog dispose d'un référencement de base; En d'autres termes, assurons-nous que nous avons des mots-clés par page, qui correspondent à cette page, et changeons la description pour qu'elle corresponde davantage à l'article. Pour nos mots-clés, nous allons récupérer les balises de la page / du post en cours. Ceci est rendu super simple par la fonction "wp_get_post_tags ()". wp_get_post_tags retournera un tableau de balises à partir de la publication en cours. Nous pouvons ensuite facilement formater ce tableau en une chaîne et le placer dans notre en-tête (dans la fonction "wp_head ()", chaque thème devrait déjà y avoir) en attachant notre fonction à l'action wp_head.
Commençons par créer une nouvelle fonction, tags_to_keywords (), et, à l'intérieur de cette fonction, nous écrirons un simple si déclaration, qui vérifie si la page en cours est une publication ou une page unique (en utilisant les fonctions WP: is_single () et is_page ()). Ensuite, nous allons créer une variable dans cette instruction if, nommée balises $, et mettre son contenu à la fonction wp_get_post_tags (); cependant, pour que cette fonction fonctionne, nous devons passer un paramètre de "post_id". Le moyen le plus simple pour nous d’y parvenir est de globaliser la variable WP $ post qui contient l'identifiant de la publication ($ post-> ID, $ post est un objet qui explique pourquoi nous appelons ses valeurs comme suit).
// SEO // ajouter des tags en tant que mots-clés function tags_to_keywords () global $ post; if (is_single () || is_page ()) $ tags = wp_get_post_tags ($ post-> ID);
Ensuite, nous allons utiliser un pour chaque pour filtrer les données $ tags et créer un nouveau tableau avec uniquement les informations souhaitées ($ tag_array). Ensuite, nous allons imploser le tableau dans une chaîne et séparer chaque élément du tableau par une virgule et un espace ($ tag_string). Ensuite, nous allons créer une autre instruction if qui vérifie si $ tag_string a une valeur (c'est-à-dire, avons-nous des balises pour la publication) et si c'est le cas, renvoie le code HTML final.
fonction tags_to_keywords () global $ post; if (is_single () || is_page ()) $ tags = wp_get_post_tags ($ post-> ID); foreach ($ tags as $ tag) $ tag_array [] = $ tag-> nom; $ tag_string = implode (',', $ tag_array); if ($ tag_string! == ") echo"\ r \ n ";
La dernière chose à faire est d’attacher notre nouvelle fonction à l’action wp_head. Pour ce faire, nous allons appeler add_action ('action', 'fonction'), et passez les paramètres "wp_head" et "tags_to_keywords" (dans cet ordre).
add_action ('wp_head', 'tags_to_keywords');
Pour augmenter encore notre référencement, nous allons également ajouter nos méta-données de description à l'en-tête, en utilisant la même méthode que les mots-clés. Une fois que l'instruction if a été réécrite, nous allons créer une nouvelle variable $ all_post_content et le remplir en utilisant la fonction WP wp_get_single_post () (et passez le paramètre de $ post-> ID). Cela nous donnera un objet complet avec toutes les données sur notre publication. Avec cette variable, nous pouvons créer une description en utilisant le contenu réel de la publication, mais nous allons la réduire à une centaine de caractères à l'aide de la fonction sous-sol (extrait $). Et ensuite, nous allons simplement faire écho au HTML avec l’extrait écrit. (Vous pouvez également ajouter un autre déclaration, et faire écho à la description de votre blog en utilisant la fonction get_bloginfo ('description').)
// ajoute sauf comme description function excerpt_to_description () global $ post; if (is_single () || is_page ()) $ all_post_content = wp_get_single_post ($ post-> ID); $ excerpt = substr ($ all_post_content-> post_content, 0, 100). ' […] '; écho "\ r \ n "; else echo"\ r \ n "; add_action ('wp_head', 'excerpt_to_description');
La dernière fonctionnalité de notre plugin va optimiser nos tables de base de données en supprimant la surcharge (données inutiles / en excès dans une table SQL créée en manipulant la base de données). Pour commencer, nous allons créer une nouvelle fonction (optimiser_database), et à l'intérieur de celui-ci, nous allons appeler la variable globale WPDB ($ wpdb). De cette façon, nous pouvons interagir avec la base de données sans avoir à entrer à nouveau nos informations d'authentification. $ wpdb a plusieurs méthodes que vous pouvez utiliser pour interagir avec et extraire des informations de la base de données (liste complète ici), mais nous n'en utiliserons qu'une, get_results. En utilisant get_results avec les paramètres "SHOW TABLES" et "ARRAY_A", vous obtiendrez un tableau associatif de tous les noms de table de la base de données. À ce stade, nous pouvons utiliser un foreach pour parcourir chacune des valeurs du tableau (en utilisant valeurs_tableau pour obtenir le nom de la table, en raison de la manière dont elle est superposée par la fonction) et utiliser une autre méthode $ wpdb, lancez une requête pour exécuter la commande d'optimisation ("OPTIMIZE TABLE _____").
// Fonction de base de données Optimize optim_database () global $ wpdb; $ all_tables = $ wpdb-> get_results ('SHOW TABLES', ARRAY_A); foreach ($ toutes_tables en tant que $ tables) $ table = valeurs_variable ($ tables); $ wpdb-> query ("OPTIMIZE TABLE". $ table [0]);
Bien que cette fonction fonctionne, elle ne fonctionnera jamais car WordPress n’a aucun moyen de savoir comment l’exécuter. Heureusement, WordPress possède une fonctionnalité appelée cron, qui permet d’exécuter des fonctions à des intervalles spécifiques (quotidien, hebdomadaire, etc.); c'est parfait pour nous, car nous voulons optimiser fréquemment notre base de données. Pour utiliser Cron, nous allons créer une nouvelle fonction (simple_optimisation_cron_on), et remplissez-le avec un autre appel de fonction à wp_schedule_event (). Wp_schedule_event a besoin de trois choses pour fonctionner: une heure d'exécution, un intervalle entre chaque exécution et une fonction à appeler; nous allons donc lui passer les paramètres: 'time ()' (nous supposerons que chaque fois que l'événement cron est créé est un bon moment pour appeler la fonction), 'daily', 'optim_database' dans cet ordre.
function simple_optimization_cron_on () wp_schedule_event (time (), 'daily', 'optimiser_database');
Super, maintenant nous avons notre optimiser_database la fonction étant ajoutée à la liste cron de WP, ou nous le ferions si nous devions appeler le simple_optimisation_cron_on une fonction. C’est vraiment dangereux et c’est une mauvaise pratique d’appeler vos propres fonctions d’ajout d’événements, car, à travers un système d’événements arbitraires, la fonction pourrait être appelée plusieurs fois. WordPress possède un ensemble de points d'ancrage spécifiques permettant aux plug-ins de résoudre ce problème: register_activation_hook et register_deactivation_hook. Ces fonctions sont appelées lorsqu'un plugin est activé (activé) et désactivé (désactivé). De cette façon, notre fonction cron ne peut être ajoutée qu'une seule fois. Nous avons maintenant la possibilité de supprimer l’événement cron si le plug-in cesse d’être utilisé. Pour fonctionner, ces fonctions ont besoin de deux informations: l'url du fichier contenant les fonctions d'activation et de désactivation (99% du temps, "__FILE__" fonctionnera parfaitement ici) et le nom de la fonction d'activation et de désactivation. Nous allons également créer une nouvelle fonction (simple_optimisation_cron_off) et remplissez-le avec un appel à une autre fonction (wp_clear_scheduled_hook ('optim_database')) pour supprimer notre événement cron.
function simple_optimization_cron_off () wp_clear_scheduled_hook ('optimise la base de données'); register_activation_hook (__ FILE __, 'simple_optimization_cron_on'); register_deactivation_hook (__ FILE __, 'simple_optimization_cron_off');
La dernière chose que nous devons faire pour notre nouveau plugin est de compléter le fichier readme.txt. Le fichier readme.txt est utilisé par le répertoire WordPress Plugin pour afficher toutes les informations que vous lui fournissez sur votre plugin. Le meilleur moyen d'apprendre à écrire un fichier readme.txt efficace est de télécharger le fichier par défaut à partir de WP et de le modifier en conséquence pour l'adapter à votre plugin. Comme la nôtre était si simpliste, voici ce que j’ai personnellement découvert:
=== Optimisation simple === Collaborateurs: Jonathan Wolfe Lien vers le plugin: http://net.tutsplus.com/ Tags: simple, optimisation, mots-clés, balises, description, référencement, optimisation, base de données Nécessite au moins: 2.5.1 Testé jusqu’à: 2.9.2 Balise stable: trunk ajoute silencieusement plusieurs fonctions d’optimisation au back-end WordPress pour accélérer l’exécution de votre blog ou de votre site. == Description == L'optimisation simple ajoute à WordPress plusieurs fonctions qui aident à réduire le poids du système et à nettoyer un peu plus tard, permettant ainsi un temps de chargement plus rapide pour votre blog ou votre site Web. ** Caractéristiques ** _Retirer les balises META inutiles: _ * "rsd_link" - Lien de découverte vraiment simple * "wlwmanifest_link" - lien Windows Live Writer * "wp_generator" - Numéro de version de WordPress _Remove filtres inutiles: _ * "wptexturize" - citations journalières * "wp_filter_kses" - HTML dans les profils utilisateur _SEO: _ * Insérer des tags de publication dans en tant que mots-clés _Outrement optimiser la base de données_ == Installation == 1. Téléchargez, décompressez et chargez dans votre répertoire de plugins WordPress 2. activez le plugin en vous dans l'administration WordPress
Vous venez d'écrire avec succès votre premier plugin WordPress, qui fonctionne et est prêt pour le répertoire WP Plugins. En cours de route, vous avez appris beaucoup sur les filtres et les actions, en utilisant des objets globaux WP, beaucoup sur la nomenclature WordPress, sur la façon d’interagir avec la base de données, sur les événements cron et sur les crochets d’activation / désactivation. Si vous avez des questions, s'il vous plaît laissez un commentaire et je vous répondrai dès que je peux.
ID); // récupère les balises post pour chaque balise ($ balises en tant que $ balise) // parcourt chaque balise $ tag_array [] = $ tag-> name; // crée un nouveau tableau avec uniquement des noms de balises $ tag_string = implode (',', $ tag_array); // convertit un tableau en chaîne séparée par des virgules if ($ tag_string! == ") // nous avons des balises echo"\ r \ n "; // ajouter une balise méta à add_action ('wp_head', 'tags_to_keywords'); // Ajoute tags_to_keywords à la fonction wp_head // add except as description Description excerpt_to_description () global $ post; // donne accès à l'objet $ post if (is_single () || is_page ()) // ne s'exécute que sur des publications ou des pages $ all_post_content = wp_get_single_post ($ post-> ID); // récupère tout le contenu de l'article / page $ excerpt = substr ($ all_post_content-> post_content, 0, 100). ' […] '; // récupère les 100 premiers caractères et ajoute "[…]" à l'écho final "\ r \ n "; // ajouter une balise méta à else // ne fonctionne que s'il n'y a pas de message ou d'écho de page "\ r \ n "; // ajouter une balise méta à add_action ('wp_head', 'excerpt_to_description'); // ajouter excerpt_to_description à la fonction wp_head // Optimiser la fonction de base de données optimiser_database () global $ wpdb; // accès à l'objet $ wpdb $ all_tables = $ wpdb-> get_results ('SHOW TABLES', ARRAY_A); // récupère tous les noms de table foreach ($ toutes_tables en tant que $ tables) // parcourt chaque nom de table $ table = array_values ($ tables); // récupère le nom de la table dans le tableau $ wpdb-> query ("OPTIMIZE TABLE". $ table [0]); // lance la commande d'optimisation SQL sur la table function simple_optimization_cron_on () wp_schedule_event (time (), 'daily', 'optim_database'); // rdd optimiser_database dans wp événements cron function simple_optimization_cron_off () wp_clear_scheduled_hook ('optim_database'); // supprime optimiser_database des événements wp cron register_activation_hook (__ FILE __, 'simple_optimization_cron_on'); // lance simple_optimization_cron_on lors de l'activation du plugin register_deactivation_hook (__ FILE __, 'simple_optimization_cron_off'); // lance simple_optimization_cron_off à la désactivation du plugin?>