Au fur et à mesure que vous continuez à écrire pour WordPress, le niveau de difficulté et de complexité de vos plugins finira par aller bien au-delà de la simple manipulation de données d’arrière-plan, comme le montre notre article pour débutant. Dans cet article, nous couvrirons en profondeur: l'interaction avec la base de données, les widgets d'administration et les widgets de la barre latérale. L'exemple d'aujourd'hui sera un plug-in personnalisé "Le plus populaire par Vues", qui crée un widget de zone d'administration à afficher, et un widget de barre latérale à l'intention des visiteurs..
Avant d'ouvrir notre IDE ou d'écrire du code, vous devriez toujours écrire une liste des fonctionnalités que votre plugin aura et n'aura pas (au moins dans sa phase initiale, vous pourrez toujours l'étendre plus tard). Pour notre plug-in, "Les plus populaires par vues", notre fonctionnalité principale consiste à afficher une liste des publications les plus populaires (nous dirons, le top 10). Deuxièmement, nous placerons également la liste dans la zone d'administration sous la forme d'une analyse basique. Enfin, nous donnerons aux développeurs la possibilité de l'afficher n'importe où en le rendant disponible en tant que widget de barre latérale, et via une simple fonction.
Avant de pouvoir afficher les publications les plus populaires, nous devons collecter des données sur les publications qui sont consultées et à quelle fréquence, mais avant même de pouvoir le faire, nous avons besoin d'un emplacement pour stocker toutes ces données. À l’intérieur d’un nouveau fichier de plug-in, créons une nouvelle fonction (ppbv_create_table) qui vérifiera si notre table existe. Si ce n'est pas le cas, nous le créerons. Notre méthode est plutôt simple. nous utiliserons $ wpdb-> get_results pour exécuter une instruction SQL recherchant une table nommée "wp_popular_by_views". S'il ne trouve pas la table, get_results retournera null. Si c'est le cas, nous utiliserons $ wpdb-> query pour écrire dans la nouvelle table. Nous exécutons cette fonction chaque fois que le plugin est activé.
prefix.'popular_by_views '; // combine le préfixe avec notre fonction tablename ppbv_create_table () global $ wpdb, $ ppbv_tablename; // appelez global pour pouvoir les utiliser dans la fonction $ ppbv_table = $ wpdb-> get_results ("SHOW TABLES LIKE '$ ppbv_tablename'", ARRAY_N); // renvoie null si aucun résultat if (is_null ($ ppbv_table)) // si nous n'avons pas de table $ create_table_sql = "CREATE TABLE $ ppbv_tablename (id BIGINT (50) NOT NULL AUTO_INCREMENT, post_id VARCHAR (255) ) NOT NULL, vues BIGINT (50) NOT NULL, PRIMARY KEY (id), UNIQUE (id)); "; // soyez prudent avec la syntaxe SQL, cela peut être très fin $ wpdb-> query ($ create_table_sql); // exécuter l'instruction SQL sur la base de données register_activation_hook (__ FILE __, 'ppbv_create_table'); // lance la fonction 'ppbv_create_table' à l'activation du plugin?>
La prochaine chose que nous devons faire, maintenant que nous avons un tableau pour stocker nos données, est de saisir nos données. Nous allons créer une nouvelle fonction (ppbv_page_viewed) que nous attacherons à la wp_head crochet pour qu'il se lance à chaque chargement de page. Dans cette fonction, nous allons faire l'une des choses suivantes, après avoir vérifié si la page en cours est déjà dans la base de données: augmentez sa vue d'un point ou, si ce n'est pas dans la base de données, ajoutez-la à la base de données. Pour savoir si la page actuelle est déjà dans la base de données, nous allons utiliser le $ post objet pour obtenir le "post_ID." Cette étape est en réalité très simple, car nous ne recueillons aucune donnée complexe. les commentaires dans le code fournissent une étape détaillée dans ce processus.
function ppbv_page_viewed () if (is_single () &&! is_page ()) // ne fonctionne que sur les publications et non sur les pages globales $ wpdb, $ post, $ ppbv_tablename; // appelez global pour l'utiliser dans funciton $ wpdb-> flush (); // vérifie l'interface de la base de données $ data = $ wpdb-> get_row ("SELECT * FROM $ ppbv_nom_table WHERE post_id =" $ post-> ID "", ARRAY_A); // récupère la ligne de données qui a l'identifiant de publication correspondant if (! is_null ($ data)) // si nous avons une ligne de données correspondante $ new_views = $ data ['views'] + 1; // augmente les vues de 1 $ wpdb-> query ("UPDATE $ ppbv_tablename SET vues =" $ new_views "WHERE post_id =" $ post-> ID ";"); // met à jour la ligne de données avec les nouvelles vues $ wpdb-> flush (); // ferme l'interface de la base de données else // si nous n'avons pas de ligne de données correspondante (personne n'a encore vu la publication) $ wpdb-> query ("INSERT INTO $ ppbv_tablename (post_id, views) VALUES (' $ post-> ID ',' 1 '); "); // ajoute une nouvelle ligne de données dans la base de données avec l'ID de poste et 1 vue $ wpdb-> flush (); // vérifie l'interface de la base de données add_action ('wp_head', 'ppbv_page_viewed'); // attachez ppbv_page_viewed au hook wp_head
Ensuite, nous allons utiliser les données que nous venons d'ajouter à notre base de données pour créer une liste ordonnée dans un widget du tableau de bord de la zone d'administration. Ce processus implique deux fonctions: la première (ppbv_admin_widget) pour tout générer à l'intérieur du widget, et ensuite, (ppbv_add_admin_widget) pour créer le widget lui-même. Commençons par la fonction de contenu, pppbv_admin_widget. Premièrement, puisque nous faisons une liste ordonnée, rappelons les balises d'ouverture pour cela. Ensuite, nous mondialiserons les vars $ wpdb et $ ppbv_tablename afin que nous puissions accéder à la base de données et récupérer les 10 ID de publication les plus consultés. Ensuite, nous allons passer le tableau retourné à travers un pour chaque et utilisez chaque ID individuel pour créer un élément de liste et créer un lien vers cette page tout en affichant ses vues (formaté avec number_format pour en faciliter la lecture).
fonction ppbv_admin_widget () echo ""; // crée une liste globale non ordonnée $ wpdb, $ ppbv_nom_table; // appel global à utiliser avec la fonction $ popular = $ wpdb-> get_results (" SELECT * FROM $ ppbv_nom_table ORDER BY vues DESC LIMIT 0,10 ", ARRAY_N); // Commandez notre table du plus grand au plus petit, puis obtenez les 10 premiers (c.-à-d. Les 10 premiers lecteurs les plus vus) pour for ((popular as $ post) // parcourez le tableau retourné de posts populaires $ ID = $ post [1]; // stocke les données dans une variable pour enregistrer quelques caractères et garder le code plus propre $ views = number_format ($ post [2]); // number_format ajoute les virgules aux bons endroits pour les nombres (ex: 12543 à 12 543) $ post_url = get_permalink ($ ID); // récupère l'URL de la publication actuelle dans la boucle $ title = get_the_title ($ ID); // récupère le titre de la publication actuelle dans la boucle echo "
"; // ferme la liste non ordonnée- $ title - $ views vues
"; // echo les informations dans un élément de liste // fin de la boucle echo"
Maintenant que nous générons du contenu, créons le widget. Dans la fonction de création, ppbv_add_admin_widget, nous allons appeler une autre fonction native de WordPress: wp_add_dashboard_widget. Il suffit de donner à wp_add_dashboard_widget les paramètres suivants: [id du conteneur], [titre dans le conteneur], [fonction de contenu] (le nôtre se remplit en tant que tel: 'popular_by_views', 'messages les plus consultés par vues', 'ppbv_admin_widget '). La dernière chose à faire est d’attacher notre fonction de création au hook wp_dashboard_setup..
fonction ppbv_add_admin_widget () wp_add_dashboard_widget ('popular_by_views', 'Messages les plus consultés par Vues', 'ppbv_admin_widget'); // crée un widget de zone d'administration || wp_add_dashboard_widget ([id de div], [titre dans div], [fonction à exécuter à l'intérieur de div]) add_action ('wp_dashboard_setup', 'ppbv_add_admin_widget'); // attachez ppbv_add_admin_widget à wp_dashboard_setup
Et maintenant, nous avons un widget de tableau de bord de travail que les administrateurs doivent voir..
La création d'un widget de barre latérale est relativement simple. malheureusement, certaines parties ne sont pas bien documentées (comme comment les rendre uniformes), mais nous allons en parler. Commençons par écrire une nouvelle fonction (ppbv_display_widget) et, à l'intérieur de celui-ci, nous copierons notre fonction de contenu à partir du widget d'administration (je suggère de déplacer les appels globaux vers le haut, en dehors du
fonction ppbv_display_widget () global $ wpdb, $ ppbv_tablename; // appel global pour une utilisation dans la fonction echo ""; // créer un conteneur echo""// ferme le conteneur wp_register_sidebar_widget ('popular_by_views', 'Messages les plus consultés par vues', 'ppbv_display_widget'); // ajoute le widget au menu de sélection || wp_register_sidebar_widget ([id de l'option], [titre de l'option], [fonction à exécuter à partir du widget]))Les plus populaires par Vues
"; // écrit le titre echo""; // crée une liste ordonnée $ popular = $ wpdb-> get_results (" SELECT * FROM $ ppbv_nom_table ORDER BY vues DESC LIMIT 0,10 ", ARRAY_N); foreach ($ popular as $ post) // loop $ ID = $ post [1]; // stocke les données dans une variable pour enregistrer quelques caractères et garder le code plus propre $ views = number_format ($ post [2]); // number_format ajoute les virgules aux bons endroits pour les nombres (ex: 12543 à 12 543) $ post_url = get_permalink ($ ID); // récupère l'URL de la publication en cours dans la boucle $ title = get_the_title ($ ID); // récupère le titre du poste actuel dans la boucle echo "
"; // ferme la liste ordonnée echo"- $ title - $ views vues
"; // echo les informations dans un élément de liste // fin de la boucle echo"
C'est en fait le minimum que vous devez faire pour un widget de barre latérale, mais dans 90% des barres latérales dynamiques, certains paramètres s'appliquent à la manière dont les widgets sont stylés. Adaptez donc notre widget à ces paramètres. La première chose à faire est d’ajouter un paramètre à notre fonction ppbv_display_widget, $ args. En ajoutant ce paramètre à l'intérieur de la fonction et en utilisant la fonction d'extraction, nous avons accès à plusieurs variables qui permettront à notre plugin d'être stylé de la même façon que le reste des widgets dans la barre latérale..
"Nous n'avons pas besoin de fournir d'entrée pour $ args, WordPress le fera pour nous."
Grâce à $ args et extract, nous avons maintenant accès aux variables suivantes que nous pouvons appeler pour styler notre widget:
fonction ppbv_display_widget ($ args) global $ wpdb, $ ppbv_tablename; // appel global à utiliser dans la fonction extract ($ args); // nous donne les paramètres par défaut des widgets echo $ before_widget; // echos le conteneur pour le widget || obtenu à partir de $ args echo $ before_title. "Le plus populaire par Vues". $ after_title; // renvoie le titre du widget || $ before_title / $ after_title obtenu à partir de $ args echo ""; // crée une liste ordonnée $ popular = $ wpdb-> get_results (" SELECT * FROM $ ppbv_nom_table ORDER BY views DESC LIMIT 0,10 ", ARRAY_N); // Commandez notre table par ordre croissant, puis obtenez les 10 premiers (c’est-à-dire les 10 premiers lecteurs les plus consultés) foreach ($ popular as $ post) // parcourent le tableau renvoyé de publications populaires $ ID = $ post [1]; // stocke les données dans une variable pour enregistrer une gardez le code plus propre $ views = number_format ($ post [2]); // number_format ajoute les virgules aux bons endroits pour les nombres (ex: 12543 à 12 543) $ post_url = get_permalink ($ ID); // get l'URL de la publication en cours dans la boucle $ title = get_the_title ($ ID); // récupère le titre de la publication en cours dans la boucle echo "
"; // ferme la liste ordonnée echo $ after_widget; // ferme le conteneur || obtenu à partir de $ args- $ title - $ views vues
"; // echo les informations dans un élément de liste // fin de la boucle echo"
Tous les utilisateurs de ce plugin ne voudront pas utiliser le widget, il est donc impératif de leur fournir une autre méthode d'affichage de notre liste. Heureusement, c’est aussi simple que de cloner notre fonction ppbv_display_widget et de supprimer les éléments du widget, en les remplaçant par du code HTML standard codé en dur..
fonction ppbv_display () global $ wpdb, $ ppbv_tablename; // appel global pour une utilisation dans la fonction echo ""; // créer un conteneur echo""; // ferme le conteneurLes plus populaires par Vues
"; // écrit le titre echo""; // crée une liste ordonnée $ popular = $ wpdb-> get_results (" SELECT * FROM $ ppbv_nom_table ORDER BY vues DESC LIMIT 0,10 ", ARRAY_N); foreach ($ popular as $ post) // loop $ ID = $ post [1]; // stocke les données dans une variable pour enregistrer quelques caractères et garder le code plus propre $ views = number_format ($ post [2]); // number_format ajoute les virgules aux bons endroits pour les nombres (ex: 12543 à 12 543) $ post_url = get_permalink ($ ID); // récupère l'URL de la publication en cours dans la boucle $ title = get_the_title ($ ID); // récupère le titre du poste actuel dans la boucle echo "
"; // ferme la liste ordonnée echo"- $ title - $ views vues
"; // echo les informations dans un élément de liste // fin de la boucle echo"
Voilà, les gars, vous avez réussi à créer votre propre plug-in WordPress "Le plus populaire par Vues". Pas trop dur, était-ce?
Lorsque vous maîtriserez l'art du développement de plugins WordPress, passez sur CodeCanyon.net et commencez à vendre vos plugins à des fins lucratives!
prefix.'popular_by_views '; // combine le préfixe avec notre fonction tablename ppbv_create_table () global $ wpdb, $ ppbv_tablename; // appelez global pour pouvoir les utiliser dans la fonction $ ppbv_table = $ wpdb-> get_results ("SHOW TABLES LIKE '$ ppbv_tablename'", ARRAY_N); // renvoie null si aucun résultat if (is_null ($ ppbv_table)) // si nous n'avons pas de table $ create_table_sql = "CREATE TABLE $ ppbv_tablename (id BIGINT (50) NOT NULL AUTO_INCREMENT, post_id VARCHAR (255) ) NOT NULL, vues BIGINT (50) NOT NULL, PRIMARY KEY (id), UNIQUE (id)); "; // soyez prudent avec la syntaxe SQL, cela peut être très fin $ wpdb-> query ($ create_table_sql); // lance l'instruction SQL sur la base de données $ wpdb-> flush (); // vérifie l'interface de la base de données register_activation_hook (__ FILE __, 'ppbv_create_table'); // lance la fonction 'ppbv_create_table' lors de l'activation du plugin ppbv_page_viewed () if (is_single () &&! is_page ()) // ne s'exécute que sur les posts et non sur les pages $ wpdb, $ post, $ ppbv_tablename; // appelez global pour l'utiliser dans funciton $ wpdb-> flush (); // vérifie l'interface de la base de données $ data = $ wpdb-> get_row ("SELECT * FROM $ ppbv_nom_table WHERE post_id =" $ post-> ID "", ARRAY_A); // récupère la ligne de données qui a l'identifiant de publication correspondant if (! is_null ($ data)) // si nous avons une ligne de données correspondante $ new_views = $ data ['views'] + 1; // augmente les vues de 1 $ wpdb-> query ("UPDATE $ ppbv_tablename SET vues =" $ new_views "WHERE post_id =" $ post-> ID ";"); // met à jour la ligne de données avec les nouvelles vues $ wpdb-> flush (); // ferme l'interface de la base de données else // si nous n'avons pas de ligne de données correspondante (personne n'a encore vu la publication) $ wpdb-> query ("INSERT INTO $ ppbv_tablename (post_id, views) VALUES (' $ post-> ID ',' 1 '); "); // ajoute une nouvelle ligne de données dans la base de données avec l'ID de poste et 1 vue $ wpdb-> flush (); // vérifie l'interface de la base de données add_action ('wp_head', 'ppbv_page_viewed'); // attachez ppbv_page_viewed à la fonction de hook wp_head ppbv_admin_widget () echo ""; // crée une liste globale non ordonnée $ wpdb, $ ppbv_nom_table; // appel global à utiliser avec la fonction $ popular = $ wpdb-> get_results (" SELECT * FROM $ ppbv_nom_table ORDER BY vues DESC LIMIT 0,10 ", ARRAY_N); // Commandez notre table du plus grand au plus petit, puis obtenez les 10 premiers (c.-à-d. Les 10 premiers lecteurs les plus vus) pour for ((popular as $ post) // parcourez le tableau retourné de posts populaires $ ID = $ post [1]; // stocke les données dans une variable pour enregistrer quelques caractères et garder le code plus propre $ views = number_format ($ post [2]); // number_format ajoute les virgules aux bons endroits pour les nombres (ex: 12543 à 12 543) $ post_url = get_permalink ($ ID); // récupère l'URL de la publication actuelle dans la boucle $ title = get_the_title ($ ID); // récupère le titre de la publication actuelle dans la boucle echo "
"; // ferme la liste non ordonnée function ppbv_add_admin_widget () wp_add_dashboard_widget ('popular_by_views', 'Messages les plus populaires par Views', 'ppbv_admin_widget'); // crée un widget de zone d'administration || wp_add_dashboard_widget ([id of div] , [titre dans div], [fonction à exécuter dans div]) add_action ('wp_dashboard_setup', 'ppbv_add_admin_widget'); // attachez ppbv_add_admin_widget à wp_dashboard_setup, fonction ppbv_display_widget ($ args) global $ wpdb call global à utiliser dans la fonction extract ($ args); // nous donne les paramètres par défaut des widgets echo $ before_widget; // echos le conteneur du widget || obtenu à partir de $ args echo $ before_title. "Most Popular by Views". $ after_title; // renvoie le titre du widget || $ before_title / $ after_title obtenu à partir de $ args echo "- $ title - $ views vues
"; // echo les informations dans un élément de liste // fin de la boucle echo""; // crée une liste ordonnée $ popular = $ wpdb-> get_results (" SELECT * FROM $ ppbv_nom_table ORDER BY views DESC LIMIT 0,10 ", ARRAY_N); // Commandez notre table par ordre croissant, puis obtenez les 10 premiers (c’est-à-dire les 10 premiers lecteurs les plus consultés) foreach ($ popular as $ post) // parcourent le tableau renvoyé de publications populaires $ ID = $ post [1]; // stocke les données dans une variable pour enregistrer une gardez le code plus propre $ views = number_format ($ post [2]); // number_format ajoute les virgules aux bons endroits pour les nombres (ex: 12543 à 12 543) $ post_url = get_permalink ($ ID); // get l'URL de la publication en cours dans la boucle $ title = get_the_title ($ ID); // récupère le titre de la publication en cours dans la boucle echo "
"; // ferme la liste ordonnée echo $ after_widget; // ferme le conteneur || obtenu à partir de $ args wp_register_sidebar_widget ('popular_by_views', 'Messages les plus populaires par Views', 'ppbv_display_widget'); // ajoute le widget à la sélectionnez le menu || wp_register_sidebar_widget ([id de l'option], [titre de l'option], [fonction à exécuter à partir du widget])) function ppbv_display () global $ wpdb, $ ppbv_tablename; // appelez global pour une utilisation dans la fonction écho "- $ title - $ views vues
"; // echo les informations dans un élément de liste // fin de la boucle echo""; // créer un conteneur echo""; // ferme le conteneur?>Les plus populaires par Vues
"; // écrit le titre echo""; // crée une liste ordonnée $ popular = $ wpdb-> get_results (" SELECT * FROM $ ppbv_nom_table ORDER BY vues DESC LIMIT 0,10 ", ARRAY_N); foreach ($ popular as $ post) // loop $ ID = $ post [1]; // stocke les données dans une variable pour enregistrer quelques caractères et garder le code plus propre $ views = number_format ($ post [2]); // number_format ajoute les virgules aux bons endroits pour les nombres (ex: 12543 à 12 543) $ post_url = get_permalink ($ ID); // récupère l'URL de la publication en cours dans la boucle $ title = get_the_title ($ ID); // récupère le titre du poste actuel dans la boucle echo "
"; // ferme la liste ordonnée echo"- $ title - $ views vues
"; // echo les informations dans un élément de liste // fin de la boucle echo"