Il s'agit du fichier principal de votre thème WordPress. Situé dans /wp-content/themes/(nom de votre thème ici)/functions.php.
Il définit les propriétés importantes du thème, personnalise les hooks, l'apparence et les fonctionnalités, et ajoute certaines des fonctionnalités dont vous avez besoin. Ce fichier est chargé à chaque fois que vous ouvrez une page WordPress, vous pouvez donc l'utiliser pour modifier n'importe quel élément du site. A ce propos, de nombreux conseils à la " comment changer quelque chose dans WordPress sans plugins
» concernent souvent spécifiquement la modification de function.php, au lieu de créer un plugin séparé pour cette fonctionnalité ou d'utiliser une solution prête à l'emploi. Cela conduit souvent à une surcharge d'informations dans le fichier, rendant le code difficile à analyser et rendant les corrections encore plus difficiles. Mais ce n’est pas la chose la plus dangereuse. Le plus dangereux c'est que Lorsque vous changez le thème actif, tout ou partie des fonctionnalités nécessaires du site disparaîtront.
Quelle est la différence entre function.php et un plugin ?
Rien. À la base, function.php est une sorte de plugin global non désactivé lié au thème actuel. Vous pouvez voir comment il est connecté dans WordPress dans wp-settings.php. Comme le montre le code source, il est chargé après tous les plugins, cependant, cela ne présente aucun inconvénient ni avantage, à l'exception peut-être de la possibilité de remplacer quelque chose dans les plugins connectés. Cela n’affectera pas non plus la vitesse d’exécution du code. Seul le contenu des plugins et des fonctions.php est concerné. Par conséquent, soyez prudent lorsque vous choisissez des plugins actifs pour votre thème et supprimez ceux inutiles qui vous sont peu utiles, vous pourrez alors rendre votre site plus facile et accélérer son fonctionnement.
Quand utiliser Functions.php
Suivez cette règle : si la fonctionnalité est directement liée au thème actuel, mais pas au fonctionnement du site, écrivez-la dans fonctions.php.
Par exemple, cela pourrait être
- Configuration des vignettes
- Définition des tailles de la barre latérale
- Configuration des emplacements pour les widgets
- Déclarer des lieux sous le menu de navigation
- Réglage des thèmes
- Fonctionnalités supplémentaires de votre thème
Quand éviter d’utiliser Functions.php
Si la fonctionnalité doit fonctionner même lorsque le thème actif est modifié, vous devez veiller à le déplacer dans un plugin séparé.
Cela peut inclure :
- Détermination des compteurs de trafic (Google Analytics, Yandex.Metrika, Liveinternet)
- Configuration de fonctionnalités d'administration supplémentaires (par exemple)
- Configuration du code source()
- Définir des codes courts
- Inscription
Les listes sont incomplètes, vous pouvez déterminer vous-même leur contenu.
Où dois-je mettre ce code sinon dans Functions.php ? Vous pouvez écrire des plugins spéciaux pour eux, cependant, il existe un moyen plus intéressant et plus simple.
mu-plugins comme alternative à Functions.php
Une fonctionnalité intéressante nous est parvenue dans les versions modernes de WordPress de WordPress MU (Multi-User), appelée Plugins MU. Son essence était la suivante. L’administrateur WordPress MU avait parfois besoin de définir des plugins pour tout un réseau de sites. Cela ne pouvait pas être réalisé avec les fonctionnalités habituelles, c'est pourquoi une section spéciale a été introduite : /wp-content/mu-plugins/, où ils ont été définis. Une autre chose intéressante est que les fichiers plugins de ce répertoire sont chargés avant tous les autres, ce qui permet de prédéfinir certaines constantes ou paramètres.
Plus tard, WPMU a été aboli, son code a été intégré au blog principal et désormais, n'importe quel WordPress peut utiliser la fonctionnalité des plugins MU, qui signifie désormais Doit utiliser, c'est-à-dire obligatoire pour l'utilisation.
Comment utiliser les plugins mu
Vous devez d’abord créer une section spéciale /wp-content/mu-plugins/
Nous y plaçons les fichiers de plugin nécessaires. Contrairement aux plugins classiques, il n'est pas nécessaire de maintenir une syntaxe spéciale et les fonctionnalités peuvent être déclarées directement.
Ici, à titre d'exemple, un fichier avec le code du compteur de présence a été créé.
L'intérieur de ce fichier ressemble à ceci
// ...A la place de cette ligne, insérez le code du compteur...
Dans le panneau d'administration, cela ressemblera à Requis
Salutations, amis. Aujourd'hui, nous allons découvrir comment faire fonctionner n'importe quel code PHP dans des widgets, des articles et sur des pages WordPress. Par défaut, une telle fonction n'est pas disponible dans ce CMS et le maximum sur lequel un utilisateur peut compter est l'implémentation du code HTML.
Pourquoi le code PHP ne fonctionne pas par défaut
Il semblerait que les développeurs n'aient pas récompensé un moteur aussi populaire et pratique avec des capacités utiles pour l'exécution automatique du code PHP. Au début, j'y ai pensé, mais je suis arrivé à la conclusion que cette politique est menée du point de vue de la sécurité, car une utilisation inappropriée de PHP dans les widgets ou dans les publications peut entraîner des conséquences irréparables - quelque chose va se briser dans la base de données et dans l'ensemble du site. va planter.
Par conséquent, travailler avec PHP est laissé aux programmeurs ou à des personnes plus ou moins avancées en la matière - tous les scripts sont exécutés directement dans les fichiers.
Pour les sites publics (où il y a plusieurs auteurs), exécuter PHP dans le corps d'un article augmente le risque de sabotage délibéré, puisque n'importe quel auteur peut accéder pleinement au site via la fenêtre d'édition de l'article.
Selon le degré de danger, je diviserais toute cette situation en 3 niveaux :
- Laisser tout comme les développeurs l'ont prévu est difficile d'endommager le site en toute sécurité, accidentellement ou intentionnellement.
- Autoriser l'exécution de PHP dans les widgets – niveau de danger moyen, seul l'administrateur du site y a accès.
- Utiliser du code partout est dangereux, puisque toute personne autorisée à éditer des articles et des pages (modérateurs, auteurs) peut gérer le site.
Pourquoi avez-vous besoin de PHP dans les widgets ?
La question est individuelle, puisque tout peut être implémenté avec ce langage de programmation. Personnellement, j'ai été incité à écrire cet article par une commande d'un client dont je suis actuellement en train de créer le site Web. Il était nécessaire d'afficher dans la barre latérale d'un widget séparé une liste d'actualités d'une catégorie - « Actualités ». Les widgets WordPress standard n'ont pas cette fonctionnalité.
La question était entre trouver un plugin doté des fonctionnalités appropriées ou utiliser du code PHP simple. Le script pour une telle tâche est vraiment petit et je ne voulais pas charger le site avec un plugin supplémentaire qui ne serait utilisé nulle part ailleurs.
De manière générale, en permettant à PHP de s'exécuter, on peut résoudre 2 problèmes :
- Remplacez certains plugins du site par des scripts et réduisez ainsi la charge sur l'hébergement ;
- Implémentez des fonctions pour lesquelles les plugins n'existent pas encore.
Dans un premier temps, je parlerai des widgets, puis, dans un bloc séparé, de la sortie de code dans le contenu.
Plugins PHP dans les widgets
L'avantage des plugins : Lors du changement de thème WordPress, les fonctions ajoutées au modèle ne sont pas perturbées ; tout continue de fonctionner sans nécessiter l'intervention du webmaster. Les hooks ajoutés au modèle lors du changement de thème devront être transférés manuellement vers le nouveau.
Dans mon exemple ci-dessus, je crée un site Web pour un client et s'il souhaite modifier le design lui-même, les paramètres définis via les fichiers function.php et autres disparaîtront, je lui facilite donc la tâche au maximum. pour gérer le site, en s'appuyant sur des plugins (surtout dans sa niche, le trafic est faible et il n'y aura pas beaucoup de charge).
Widget de code PHP
J'utilise ce plugin dans mon travail depuis longtemps ; il s'ajoute à la liste des widgets disponibles, similaire à un widget de texte normal, capable uniquement de traiter PHP en plus du texte et du HTML.
PHP Code Widget est présent dans le référentiel officiel WordPress et peut être facilement trouvé par son nom. Comment installer de tels plugins.
Aucun paramètre n'est requis, le widget apparaîtra dans la liste immédiatement après l'installation et l'activation du plugin. Faites glisser « Code PHP » vers la barre latérale et ajoutez-y n'importe quel script.
PHP dans le widget WordPress sans plugin
Dans ce cas, nous aurons besoin d'un hook qui remplacera la fonction standard qui permet au widget texte WordPress de fonctionner avec une fonction qui permet de traiter PHP.
Ce hook est ajouté au fichier function.php du thème courant (tout à la fin avant la parenthèse fermante ?>). Après cela, aucune nouvelle option de widget n'apparaît, comme c'est le cas avec le plugin ; les codes PHP commencent à fonctionner en texte standard.
Code prêt :
Add_filter("widget_text"," text_html_php_widget ",100); fonction text_html_php_widget($text) ( if(strpos($text,"") !== false) { ob_start(); eval("?>".$text); $text = ob_get_contents(); ob_end_clean(); ) return $text; )
La première ligne est un filtre qui remplace la fonction de widget de texte standard par une nouvelle à chaque fois qu'elle est appelée - text_html_php_widget, puis il y a une description de la nouvelle fonction elle-même.
Pourquoi le code PHP dans les articles et publications WordPress
Dans les publications, le code PHP exécutable est beaucoup moins souvent requis que dans les widgets, donc dans la première partie de l'article, j'ai examiné séparément la barre latérale afin que vous puissiez éviter de connecter inutilement des fonctions potentiellement dangereuses.
Mais même dans les publications, il est nécessaire d'utiliser des scripts. L’exemple le plus courant est l’affichage d’un plan du site sans plugin. Certes, vous pouvez utiliser une autre technique pour la carte : créer un modèle de page spécial (il s'agit d'un sujet distinct).
Une fois, j'avais besoin d'une sortie PHP dans le but suivant :
J'ai créé un site Web vidéo. Les épisodes de la série étaient affichés dans des playlists par saison, et sous chaque playlist de la saison il fallait afficher une liste d'épisodes avec un lien vers votre page. Cela ressemble à un plan du site, mais en plus compliqué : la conclusion devait être tirée de listes de sections individuelles. Il était possible de saisir manuellement chaque lien grâce au code HTML, mais il y a plusieurs centaines d'épisodes et la procédure est fastidieuse. De plus, si une nouvelle série apparaissait, un lien vers celle-ci devrait être ajouté manuellement, ce qui n'est pas pratique. J'ai donc décidé d'utiliser les fonctions PHP pour l'implémentation.
Plugin pour l'exécution de PHP dans le contenu Exec-PHP
Malgré le fait que ce plugin n'ait pas été mis à jour depuis 7 ans, il fait parfaitement son travail. Et je l'ai choisi pour une raison : il n'utilise aucun shortcode, comme ses concurrents, mais permet d'insérer du code pur dans les articles WordPress, en commençant par .
Le plugin Exec-PHP se trouve dans le référentiel et est installé via le menu du panneau d'administration du moteur.
Parmi les paramètres, il n'y en a qu'un - autorisation/interdiction d'exécution de code dans un widget de texte, il n'y a pas d'option pour désactiver le travail dans les publications et sur les pages, si vous devez le supprimer, désactivez le plugin.
Pour insérer du code PHP dans un article, il faut le passer en mode HTML (onglet Texte). Le mode visuel gâchera très probablement le code.
Exécuter du code PHP dans des articles WordPress sans plugin
Par analogie avec les widgets, on peut remplacer le plugin par une fonction spéciale qui permet l'exécution de scripts PHP dans le contenu. Malheureusement, je n'ai pas pu trouver d'option dans laquelle le code fonctionnerait automatiquement comme dans le cas d'un plugin, réagissant aux balises. Nécessite l’utilisation d’un shortcode. Ma connaissance de PHP n'était pas suffisante pour écrire moi-même la fonction requise, je la présente donc telle quelle. Travailler avec un shortcode présente un inconvénient important qui complique le travail, j'en parlerai ci-dessous.
Comment utiliser la fonction ci-dessous
- Nous le collons dans le fichier function.php du thème ;
- Au bon endroit dans l'article nous insérons la construction - code exécutable sans
Fonction:
/* Exécution de php dans les articles et pages WordPress : code */ function start_php($matches)( eval("ob_start();".$matches."$inline_execute_output = ob_get_contents();ob_end_clean();"); return $inline_execute_output ; ) fonction inline_php($content)( $content = preg_replace_callback("/\((.|\n)*?)\[\/startphp\]/", "start_php", $content); $content = preg_replace( "/\((.|\n)*?)\[\/startphp\]/", "$1", $content); return $content; ) add_filter("the_content", "inline_php");
Défaut
Si le code PHP inséré contient des inserts HTML ou du texte, cela ne fonctionnera pas. Tout texte ou balise devra être inséré à l'aide de la commande echo, ce qui n'est pas toujours pratique. Autrement dit, le code doit être purement PHP avec 100 formats corrects.
Droite
Echo « Voici comment cela fonctionnera » ;
Faux
Echo "Cette ligne est correcte" ; Ça ne marchera pas comme ça
Il n'y a pas de problème de ce type dans le plugin Exec-PHP - le texte et le HTML seront exécutés, mais tous les éléments du code PHP doivent être encadrés dans les balises appropriées.
Pour de nombreux webmasters, le sujet décrit dans cet article ouvre des possibilités infinies de créativité - vous pouvez implémenter quelque chose qui ne pouvait pas être fait auparavant, ainsi que vous débarrasser de nombreux plugins, en les remplaçant par différents filtres, fonctions et hooks.
Toutes les personnes familiarisées avec WordPress ont entendu parler du fichier de thème (modèle) function.php. Cependant, tout le monde ne comprend pas bien son objectif, le considérant uniquement comme un fichier stockant diverses fonctions PHP. Sur Internet, comme sur mon site, il est souvent proposé d'ajouter du code PHP à ce fichier. Cependant, tous les codes ne fonctionneront pas pour ce fichier. Non pas parce que ça ne marchera pas, mais parce que ça ne rentre pas dans la logique d’utilisation.
De plus, lors de l'édition de fonctions.php, les débutants commettent des erreurs à cause desquelles le site cesse de fonctionner.
Dans cet article, je vais essayer de considérer tous ces points : quand utiliser Functions.php et quand il vaut mieux ne pas le faire, quelles erreurs peuvent survenir lors de l'édition de Functions.php.
Caractéristiques fonctions.php
function.php se trouve dans le dossier du thème et est chargé à chaque fois, lors de la visualisation de la partie externe du site, dans le panneau d'administration, et même lors des requêtes AJAX. Il n'y a aucun cas où Functions.php ne sera pas inclus et cela ouvre de larges opportunités pour les développeurs.
Par exemple, le code suivant inséré dans le fichier function.php du thème étendra les capacités du thème en activant la prise en charge des miniatures de publication :
Add_action("after_setup_theme", "wp_kama_theme_setup"); function wp_kama_theme_setup())( // Prise en charge des vignettes add_theme_support("post-thumbnails"); )
Autre exemple, le code remplacera le texte du pied de page du panneau d'administration WordPress par des données sur le nombre de requêtes de base de données, le temps de génération des pages et l'utilisation de la mémoire :
## Données sur le nombre de requêtes vers la base de données dans le panneau d'administration add_filter("admin_footer_text", "wp_usage"); // dans le panneau d'administration add_filter("wp_footer", "wp_usage"); // sur le site web, fonction wp_usage())( echo sprintf(__("SQL : %d in %s sec. %s MB", "km"), get_num_queries(), timer_stop(0, 3), round(memory_get_peak_usage () /1024/1024, 2)); )
fonctions.php vs plugins
- "Les plugins fonctionnent plus lentement que le code du fichier function.php", disent les ignorants - ce n'est pas vrai !
En théorie, insérer du code dans Functions.php revient à installer un plugin, mais ce n'est pas la même chose. Après tout, lorsque nous changeons de thème, nous obtiendrons un fichier function.php complètement différent et toutes les modifications apportées seront perdues, mais le plugin restera, peu importe à quel point le thème est modifié. Pour ces raisons, nous devons nous référer au fichier function.php. Si la fonctionnalité ajoutée concerne non seulement le thème, mais également le site dans son ensemble, alors vous devriez penser à la connecter en tant que plugin.
Le deuxième exemple ci-dessus est « Données sur le nombre de requêtes vers la base de données dans le pied de page du panneau d'administration ». Logiquement, il ne convient pas à une utilisation dans le fichier function.php. Parce que si nous changeons le modèle, nous perdrons cette fonctionnalité, mais elle est utilisée dans le panneau d'administration et est nécessaire quel que soit le thème utilisé.
Alors supprimons-le de function.php et faisons-en un plugin - c'est facile !
Pour créer un plugin, vous devez créer un fichier avec le code ci-dessous (le nom du fichier peut être n'importe quoi), l'ajouter au répertoire du plugin wp-content/plugins/ et activer le plugin dans le panneau d'administration :
Si vous ne souhaitez pas voir un autre plugin dans le panneau d'administration, vous pouvez utiliser les plugins Must-Use.
Que fait réellement function.php ?
Comme je l'ai écrit plus haut : function.php est nécessaire afin d'étendre les fonctionnalités du thème et uniquement pour cela ! Dans ce fichier, vous devez ajouter tout code nécessaire au modèle lui-même, mais pas au site dans son ensemble.
Si sur une ressource il vous est demandé d'ajouter du code au fichier function.php et que la fonction du code n'est pas directement liée au modèle, alors ne soyez pas paresseux pour créer un plugin à partir de ce code et peut-être qu'à l'avenir vous le ferez éviter la perte inattendue de fonctionnalités précédemment ajoutées.
Comment fonctions.php est chargé
function.php est inclus lors de l’initialisation du thème actuel, une fois que toutes les fonctions WordPress et tous les plugins actifs sont activés. Je vais décrire brièvement la chronologie de chargement de WordPress, où vous pouvez voir quand des fichiers importants sont connectés :
Index.php wp-blog-header.php wp-load.php wp-config.php wp-settings.php // Les fonctions les plus basiques sont connectées (connexion à la base de données $wpdb et au système de filtrage) // Les filtres de base sont connecté // SHORTINIT : Arrêt du chargement, où il n'y a que le plus basique : if (SHORTINIT) return false ; // tout l'environnement WordPress est connecté : fonctions de base, filtres // les plugins indispensables sont connectés, puis l'événement est déclenché : do_action("muplugins_loaded"); // les plugins activés sont connectés, puis l'événement est déclenché : do_action("plugins_loaded"); // les variables globales sont définies : wp_the_query, wp_query, wp_rewrite, wp, wp_widget_factory, wp_roles ... do_action("setup_theme"); // installe le thème actuel // connecte le fichier du thème >>>>>>>>>>>>> function.php<<<<<<<<<<<< do_action("after_setup_theme"); // событие, когда среда WP, все плагины и тема полностью подключены, но на экран еще ничего не выведено: do_action("init"); // проверка статуса сайта для мультисайтовой сборки // тоже самое что init только после проверки статуса (до этой строки работа PHP может не дойти) do_action("wp_loaded"); wp() // заполняет основной запрос WP и все глобальные переменные связанные с ним wp-includes/template-loader.php // подключает нужный файл шаблона
Le processus de chargement de WordPress, et de function.php en particulier, est bien illustré dans cette figure :
Schéma de chargement WordPressErreurs dans function.php lors du collage du code
J'ai rencontré à plusieurs reprises des questions sur des erreurs, telles que : "Après avoir installé le code dans le fichier function.php, le site a cessé de fonctionner - un écran blanc. Que dois-je faire ?" J'ai moi-même rencontré quelque chose de similaire une fois.
Pour moi, certaines solutions à ce problème sont restées longtemps un mystère - il semblait que je n'avais rien fait, et il n'y avait même pas de danse avec un tambourin, mais une fois que tout a fonctionné. Pourquoi cela arrive-t-il? Examinons les situations possibles à cause desquelles le site peut « casser » et leur explication :
- Vous modifiez function.php - le site cesse de fonctionner.
Vous insérez le code terminé - le site cesse de fonctionner.
Le plus souvent, il s'agit de balises PHP d'ouverture et de fermeture. En règle générale, si le code que vous insérez comporte ces balises au début et à la fin, elles doivent alors être supprimées. De plus, le fichier function.php ne doit afficher aucun texte (code HTML ou autre contenu) à l'écran. La sortie de texte n'est autorisée qu'à l'intérieur des fonctions qui seront utilisées ultérieurement dans le modèle ou qui sont attachées aux hooks (voir ci-dessous pour plus de détails).
Aucun caractère autorisé avant, y compris les caractères invisibles (saut de ligne), car function.php est connecté avant de définir les en-têtes http (ces en-têtes transmettent diverses données, par exemple, qu'il s'agit d'un document html ; que l'encodage utf-8 est différent). Selon les règles PHP, le contenu doit être affiché à l'écran après l'envoi des en-têtes. Et tout ce qui est dehorsc'est le contenu - le texte affiché à l'écran, même le caractère \n invisible. Ce texte provoque donc une erreur.
Pour éviter les erreurs, considérez 4 points :
#1 Une bonne nidification
Par exemple, nous avions cette structure :
.......voici le code......... ?>
Correctement comme ceci :
#2 Pas de sauts de ligne, d'espaces, de texte avant
Ce code provoquera une erreur :
Mais celui-ci ne le fait pas :
Il est plus logique de l'écrire ainsi :
Il arrive qu'un saut de ligne soit placé à la toute fin de fonctions.php, et cela devient alors un vrai problème, car tout semble correct, mais le site ne fonctionne pas. En fait, après ?> ou avant
il y a une ligne vide ici
Pour cette raison, de nombreux développeurs suppriment complètement la balise de fermeture ?> ; cela est acceptable en PHP. Je recommande de toujours faire ceci :
#3 Utilisationà l'intérieur des fonctions PHP
S'il existe une fonction dans function.php, alors les balises peuvent être utilisées à l'intérieur de cette fonction, par exemple, afin de mettre en évidence visuellement le code HTML à l'intérieur d'une fonction :
Le fait est que dans ce cas, la fonction est uniquement enregistrée et n'effectue aucune action. Tout ce qui se trouve à l'intérieur d'une fonction (entre ( )) ne fonctionne pas tant que cette fonction n'est pas appelée, et ces fonctions sont généralement appelées à partir d'un modèle ou via des filtres, après l'envoi des en-têtes HTTP. Donc, dans cet exemple, nous pouvons ignorer les sauts de ligne et utiliser ?> et
#4 Encodage
Autre remarque concernant le fichier function.php : définissez l'encodage du fichier sur UTF-8 (UTF-8 sans BOM). Sinon, si le fichier de fonction contient du texte en cyrillique, il sera affiché en caractères incompréhensibles : charabia, gribouillis - appelez-le comme vous voulez.
Dans ce guide, nous verrons de plus près comment créer un plugin WordPress avec sa propre page d'administration. Une caractéristique de tout plugin est la séparation de son code du code principal de WordPress. Si quelque chose arrive au plugin, le reste du site fonctionnera.
- Éditeur de texte
Pour suivre les étapes de ce didacticiel, vous aurez besoin d'un éditeur de texte tel que Notepad++ ou l'environnement de développement NetBeans. Vous avez également besoin d'un accès FTP dans votre compte d'hébergement et .
Ce guide des plugins WordPress est écrit pour ceux qui possèdent déjà . Conformément au didacticiel, nous allons créer une nouvelle fonction, appeler les fonctions WordPress existantes en les utilisant comme paramètres.
Qu'est-ce qu'un plugin WordPress ?
Plugin WordPress est un code autonome qui améliore et étend les fonctionnalités de WordPress. En utilisant n'importe quelle combinaison de PHP, HTML, CSS, JavaScript/jQuery ou un certain nombre d'autres langages de programmation, un plugin WordPress peut ajouter de nouvelles fonctionnalités à n'importe quelle partie de votre site, y compris la console d'administration. Vous pouvez modifier le comportement par défaut de WordPress ou supprimer complètement les comportements inutiles. Les plugins facilitent la personnalisation de WordPress en fonction de vous et de vos besoins.
Puisqu’un plugin WordPress est un code distinct, il n’interfère directement avec aucune partie du code principal de WordPress. Le plugin peut être copié ou installé sur n’importe quelle installation WordPress. Alternative (et fortement déconseillé) La façon d’apporter des modifications dans WordPress consiste à écrire une nouvelle fonction dans un fichier WordPress. fonctions.php, qui se trouve dans le répertoire /wp-inclut/ ou vers un fichier fonctions.php, qui fait partie de votre thème. Cela peut entraîner un certain nombre de problèmes possibles.
WordPress et ses thèmes sont mis à jour régulièrement. Et tant que vous utilisez un thème enfant WordPress, la prochaine mise à jour écrasera le fichier fonctions.php, et le nouveau code que vous avez ajouté sera supprimé et vous devrez l'ajouter encore et encore. Un autre moment gênant peut survenir si vous écrivez beaucoup de fonctions et que l'une d'elles a un bug que vous ne pouvez pas localiser, vous devrez peut-être remplacer le fichier actuel par celui d'origine, mais vous devrez sacrifier toutes les autres fonctions . Cela entraînera un grand nombre d'erreurs PHP sur le site, car les appels aux fonctions déjà supprimées seront toujours effectués depuis d'autres endroits.
Les plugins ne sont jamais automatiquement écrasés ou supprimés lors de la mise à jour de WordPress. S'il y a des erreurs dans le code de votre plugin WordPress, vous pouvez simplement le désactiver dans la console d'administration pendant que l'erreur est corrigée. Dans le cas où votre plugin présente un bug sérieux, WordPress peut parfois le désactiver automatiquement pour que l’ensemble du site continue de fonctionner.
Qu'est-ce qu'un crochet ?
Les plugins WordPress interagissent avec le code principal via ce qu'on appelle crochets (crochets, de l'anglais crochet – crochet). Vous pouvez y « accrocher », comme des hooks, l'exécution de toutes les fonctions qui nous intéressent. Il existe deux types de hooks dans WordPress :
- Hooks d’action ou hooks d’événement (ajouter/supprimer une fonction personnalisée à un événement).
- Hooks de filtre ou hooks de filtre (pour modifier les données traitées par les fonctions).
Événements et crochets d'événement
Visiter n’importe quelle page d’un site WordPress implique d’appeler un ensemble de fonctions PHP (appelées événements - Actions). Les fonctions sont liées à crochets d'action. Le mécanisme de hook d’événement est fourni par WordPress. Tu peux ajouter vos fonctions à n'importe quel événement de la liste des événements utilisant le mécanisme de hook et elles seront lancées lorsque cet événement sera déclenché. tu peux aussi supprimer fonctions déjà existantes à partir de n’importe quelle liste de hooks d’événement. Les hooks d'événement sont liés à l'exécution d'un événement spécifique. Par exemple, avant de fermer une balise sur n'importe quelle page, l'événement hook est appelé wp_head() et un certain nombre de fonctions liées à ce hook sont lancées wp_head().
Ajout de fonctions à un hook d'événement à l'aide de add_action()
À ajouter fonction sur n’importe quel hook d’événement, votre plugin WordPress doit appeler une fonction WordPress appelée ajouter_action(), avec au moins deux paramètres.
// Hook d'événement "init", appelé une fois que WordPress a fini de charger le code principal add_action("init", "add_Cookie"); // Définition d'un cookie avec l'heure actuelle, fonction add_Cookie() ( setcookie("last_visit_time", date("r"), time()+60*60*24*30, "/"); )
- crochets d'événement(crochet d'action), auquel nous allons lier notre fonction.
- Le deuxième paramètre obligatoire est le nom les fonctions, que nous lancerons.
- une priorité (priorité) la fonction que vous êtes sur le point d'exécuter. Vous pouvez lier autant de fonctions que vous le souhaitez à un seul hook d'événement et y accéder dans n'importe quel ordre. La priorité de lancement par défaut est de 10, votre fonction s'exécute immédiatement après les fonctions WordPress intégrées. La fonction de priorité 11 s'exécutera ensuite, et ainsi de suite.
- nombre d'arguments, signifie le nombre de paramètres que votre fonction personnalisée peut accepter. Par défaut, le nombre de paramètres est 1.
Exemple de code de plugin pour afficher le texte après la section de pied de page sur chaque page
Ce plugin WordPress intercepte le hook d'événement wp_footer(), qui est appelé immédiatement avant la balise de fermeture