Crochets d'initialisation de WordPress avantages et erreurs courantes

En programmation, l’initialisation des données est importante car c’est là que nous définissons les conditions préalables pour l’application, telles que ses attributs, ses fichiers et données requis, sa connexion à la base de données, etc..

WordPress lui-même a une procédure d'initialisation bien définie. Tout au long du cycle de vie d'une page, WordPress déclenche un certain nombre d'actions dont plusieurs ont déjà été abordées. À cette fin, il fournit un ensemble de points d’initialisation qui servent naturellement à initialiser l’application avant d’exécuter sa fonctionnalité principale..

En tant que développeurs de plugins et de thèmes, il est important de comprendre les cas d'utilisation et erreurs courantes de ces crochets d'initialisation, afin de construire des applications de qualité.

Dans cet article, nous allons examiner l’importance des crochets d’initialisation de WordPress et leur utilisation dans différents scénarios..


Introduction aux crochets d'initialisation

WordPress fournit une large gamme de points d'ancrage pouvant être utilisés dans le développement de plugins et de thèmes..

Dans une demande de page typique, tous les points d'ancrage d'action sont exécutés dans un certain ordre. Plus précisément, tous les points d'ancrage sont exécutés une fois que l'application de base WordPress a terminé son processus de chargement..

Donc, les crochets d'initialisation sont principalement utilisés pour, vous l'aurez deviné, initialiser le processus dans les plugins et les thèmes. Jetons un coup d'oeil à la disponibilité init crochets dans WordPress, dans l'ordre de leur exécution:

  • init s’exécute après le chargement de WordPress mais avant l’envoi des en-têtes. Généralement, cela est utilisé par les plugins pour initialiser leur processus.
  • widgets_init est utilisé pour enregistrer les widgets de la barre latérale de l'application. le register_widgetla fonction est exécutée dans ce crochet.
  • admin_init est exécutée en tant que première action lorsque l'utilisateur accède à la section admin de WordPress. Généralement, il est utilisé pour initialiser les paramètres spécifiques à la zone d'administration.
Outre ces trois crochets, il existe un autre crochet appelé admin_bar_init, qui s’exécute après l’initialisation de la barre d’administration. Le codex WordPress ne fournit pas d'explication sur ce hook, et peu de plugins l'utilisent.

Vous pouvez également consulter l’ensemble du processus d’exécution du hook d’action WordPress dans le Codex..

WordPress exécute chaque crochet dans un certain ordre (que vous pouvez voir dans le Codex). En tant que tel, il est important de prendre en compte l'ordre d'apparition lors de l'utilisation de chaque point d'ancrage d'action. Envisagez les scénarios suivants pour identifier les différences.

Définissant admin_init À l'intérieur de init Crochet

Si nécessaire, nous pouvons définir des points d'ancrage WordPress au sein d'autres points d'ancrage. Dans une demande typique, init le crochet court avant la admin_init crochet. Essayons donc de produire quelque chose en plaçant admin_init à l'intérieur de init crochet:

 add_action ('init', 'test_init'); function test_init () add_action ('admin_init', 'test_admin_init');  function test_admin_init () echo "Admin Init Inside Init"; 

Après avoir exécuté ce code, nous obtiendrons la sortie désirée en utilisant le écho déclaration.

Définissant init À l'intérieur de admin_init Crochet

Voyons le code et la sortie de ce scénario dans lequel un hook antérieur est défini dans un hook qui vient plus tard dans l'ordre d'exécution..

 add_action ('admin_init', 'test_admin_init'); function test_admin_init () add_action ('init', 'test_init');  function test_init () echo "Init Init Init Admin"; 

Ici, nous n’obtiendrons aucun résultat - c’est prévu - car le init le crochet s'exécute avant admin_init crochet, et donc il n'est pas disponible après avoir défini le admin_init crochet.

Comme vous pouvez le constater, il est essentiel de comprendre la procédure d’exécution des points d'ancrage pour créer des plugins performants. L'ordre d'apparition est important pour tous les crochets dans WordPress.


Explorer le init et admin_init Crochets

Parmi les crochets init, init et admin_init vaut la peine d’être explorée, car ces deux points d’accès sont largement utilisés dans de nombreux plugins. L'utilisation d'autres crochets d'initialisation est simple comparée à ces deux crochets.

En tant que tel, nous allons examiner les fonctionnalités de init et admin_init crochets.

le init le crochet est exécuté dans chaque demande de tous les deux le frontend du site WordPress ainsi que le backend.

le admin_init le crochet est exécuté après la section admin termine son processus de chargement. Donc, ce hook s’exécute également sur chaque requête de page d’administrateur. Les utilisateurs doivent être connectés pour profiter de ce crochet.

Étant donné que ces deux hooks sont exécutés à chaque requête, nous devons planifier les fonctionnalités de la mise en œuvre de ces hooks en conséquence, car cela peut avoir un impact important sur les performances du site..

Comment utiliser init Crochets

En règle générale, les points d’initialisation sont disponibles dans la plupart des plugins WordPress existants et sont essentiels à la gestion de leur traitement..

WordPress ne définit pas ce que nous devrions et ce que nous ne devrions pas inclure; par conséquent, les développeurs peuvent commettre des erreurs mineures qui, à leur tour, peuvent entraîner une diminution considérable des performances. Dans cette section, nous allons voir comment nous pouvons utiliser efficacement les deux init et admin_init crochets.

Jetons un coup d'œil aux meilleures pratiques d'utilisation des hooks d'initialisation.

le init crochet

  • Enregistrement de types d'articles personnalisés - WordPress recommande l'utilisation du init crochet pour l'enregistrement de nouveaux types de publication personnalisée.
  • Initialiser vos configurations et paramètres de plugin - Les configurations et les paramètres de plug-in doivent être définis dans chaque requête. Il est donc recommandé de les inclure à l'intérieur de ce hook..
  • Accès aux données soumises par l'utilisateur (à l'aide de $ _GET et $ _POST) - Nous pouvons intercepter les données soumises par les utilisateurs sans aucune action, mais il est recommandé d'utiliser le init crochet car il garantit l'exécution dans chaque demande.
  • Ajout de nouvelles règles de réécriture - Nous pouvons définir de nouvelles règles de réécriture en utilisant le init accrocher, mais gardez à l’esprit que ces nouvelles règles ne prendront effet que lorsque nous aurons vidé les règles de réécriture.
  • Ajouter ou supprimer des actions personnalisées - Les plugins contiennent de nombreuses actions personnalisées pour étendre la fonctionnalité. Il y aura des scénarios où nous devrons ajouter de nouvelles actions personnalisées et supprimer celles existantes. Dans de telles occasions, il est essentiel de mettre en œuvre ces activités au sein de init crochet.
  • Charger le domaine de texte du plugin - WordPress offre un support multilingue, ce qui nous permet de charger le fichier contenant les chaînes traduites. Cela devrait également être placé à l'intérieur du init crochet.

le admin_init crochet

  • Contrôle d'accès - Il est essentiel de vérifier les autorisations des utilisateurs connectés avant de permettre à chaque utilisateur d'accéder à un ensemble spécifique de fonctionnalités ou de fonctionnalités.. admin_init est la première action à exécuter dans la zone d'administration afin que nous puissions l'utiliser pour gérer le contrôle d'accès.
  • Ajout de nouveaux paramètres - Ce raccord peut être utilisé pour ajouter de nouvelles pages de paramètres ou de nouveaux paramètres dans le panneau de paramètres WordPress existant..

Il y a beaucoup d'autres implémentations possibles avec ces hooks, mais ces fonctionnalités ont leurs propres hooks et il n'est pas nécessaire d'utiliser les hooks d'initialisation..

Erreurs courantes d'utilisation des crochets d'initialisation

Nous trouvons souvent des scénarios dans lesquels les développeurs comprennent mal l’utilisation des points d’initialisation. Une mauvaise utilisation de ces hooks peut entraîner de sérieux problèmes de performances (ainsi que des plugins de mauvaise qualité).

Identifions les erreurs courantes et comment les éviter:

  • Flushing règles de réécriture - Il s'agit d'une opération gourmande en ressources, dans laquelle toutes les règles de réécriture sont vidées et réorganisées pour en ajouter de nouvelles et pour supprimer les règles inutiles. De nombreux développeurs vident les règles de réécriture à l'intérieur init actions et finissent par créer une surcharge de performance inutile dans chaque demande. Nous devrions configurer un moyen de vider manuellement les règles de réécriture à l'aide d'un bouton ou de vider les règles relatives aux activités peu fréquentes, telles que la sauvegarde des paramètres du plug-in..
  • Accéder à la base de données - Il est indispensable d’accéder à la base de données pour fournir diverses fonctionnalités, mais il est également important d’empêcher les appels inutiles à la base de données dans les crochets d’initialisation lorsqu’elle est exécutée à chaque demande. À cette fin, il est idéal d'affecter des points d'ancrage à la base de données dans des points d'accroche spécifiques à une fonctionnalité afin d'éviter une surcharge de performances..
  • Exécution de routines de mise à niveau - Les plugins doivent avoir une routine de mise à niveau pour mettre à niveau ses fonctionnalités pour les nouvelles versions. En règle générale, les développeurs utilisent des points d'ancrage pour vérifier les versions et les paramètres du plug-in avant d'exécuter le processus de mise à niveau. Nous pouvons laisser les utilisateurs mettre à niveau le plugin en fournissant un écran personnalisé au lieu de vérifier automatiquement chaque demande..
  • Utilisation de hooks d'initialisation au lieu de hooks spécifiques à une fonctionnalité - C'est l'erreur la plus commune commise par de nombreux développeurs. WordPress propose une large gamme de points d'ancrage qui ciblent différentes fonctionnalités uniques. Il est important d'utiliser des points d'ancrage spécifiques aux fonctionnalités afin d'éviter les conflits et de rendre le code extensible. Crochets tels que init et admin_init peuvent être utilisés à la place de crochets spécifiques, les développeurs ont donc tendance à les utiliser sans connaître leur plein effet. Certains des scénarios courants où les développeurs utilisent init et admin_init Les crochets au lieu des crochets recommandés sont les suivants:
    • admin_menu - Nous pouvons ajouter des pages de menu en utilisant add_menu_page une fonction. Il est recommandé d'utiliser admin_menu crochet pour créer des pages d'administration. Mais beaucoup de développeurs utilisent admin_init crochet comme il est exécuté après admin_menu crochet.
    • wp_enqueue_scripts - La méthode recommandée pour ajouter des styles et des scripts est d'utiliser wp_enqueue_scripts crochet. Mais beaucoup de développeurs utilisent wp_enqueue_script à l'intérieur de init crochet pour charger des scripts et des styles.

Il existe un certain nombre de situations similaires dans lesquelles les développeurs utilisent un hook d'initialisation commun au lieu d'un hook spécifique à une fonctionnalité, ce qui devrait être évité autant que possible..


Aller de l'avant avec les crochets d'initialisation

Les points d’initialisation de WordPress jouent un rôle essentiel dans le développement de plugins et de thèmes. De nombreux développeurs utilisent mal les points d'ancrage, ce qui crée une surcharge de performances inutile. Dans cet article, nous avons discuté de l'utilisation appropriée de ces crochets, des erreurs courantes et de la manière de les éviter..

Nous pouvons maintenant appliquer la même technique à des hooks personnalisés spécifiques à un plugin. De nombreux plugins avancés utilisent leurs propres crochets d'action pour les rendre extensibles. Pour de tels plugins, nous pouvons définir des hooks d'initialisation spécifiques pour permettre aux développeurs de se concentrer sur les tâches d'initialisation sur des hooks prédéfinis, au lieu de les utiliser partout..

N'hésitez pas à partager vos expériences d'utilisation correcte des points d'ancrage ainsi que des erreurs d'utilisation des points d'initialisation. Au plaisir de voir ce que vous avez à partager dans les commentaires!