Maison > Tutoriel CMS > WordPresse > Le plugin WordPress met à jour dans le bon sens

Le plugin WordPress met à jour dans le bon sens

Jennifer Aniston
Libérer: 2025-02-15 12:56:11
original
888 Les gens l'ont consulté

Explication détaillée et meilleures pratiques du mécanisme de mise à jour du plug-in wordpress

WordPress lui-même ne fournit pas de processus de mise à jour du plug-in natif, et les développeurs doivent l'implémenter eux-mêmes. Cela inclut la mise à jour du numéro de version dans la base de données et la création de nouvelles options si nécessaire.

Le numéro de version du plugin WordPress doit être stocké à deux endroits: Constantes dans le fichier principal du plugin et les options de la base de données. Cela permet de détecter si les options de base de données ont été mises à jour depuis la dernière mise à jour du plugin.

Lors de la mise à jour des options, les développeurs doivent faire attention de ne pas écraser les choix de l'utilisateur. Si une option n'existe pas dans la base de données, elle doit être créée;

Pour les options stockées sous forme de tableaux, les développeurs peuvent utiliser la fonction PHP array_merge() pour s'assurer que toutes les clés sont définies et qu'aucune option inexistante n'est introduite. Cela garantit également que si l'utilisateur modifie l'ancienne option, sa valeur sera conservée.

Il y a quelques semaines, j'ai reçu un e-mail sur WP Photo Sphere (un plugin WordPress que j'ai développé). Le problème est important: la mise à jour du plugin provoque un plan des installateurs. Après une enquête, j'ai constaté que le problème découle des options utilisées par le plugin: ces installateurs ne fournissent aucune valeur par défaut pour les nouvelles options que j'ai ajoutées.

WordPress Plugin Updates the Right Way Ces valeurs sont très importantes, j'ai donc besoin d'un moyen de créer les valeurs par défaut. Cependant, contrairement à ce que je pense, WordPress ne fournit aucune méthode native pour gérer le processus de mise à jour.

C'est pourquoi je veux écrire ce tutoriel. Premièrement, nous comprendrons exactement pourquoi nous avons besoin du processus de mise à jour et pourquoi WordPress ne fournit pas un tel processus. Je vais ensuite vous montrer comment créer correctement votre propre processus pour mettre à jour vos options.

L'importance du processus de mise à jour du plug-in

Habituellement, la modification du fichier ne suffit pas pour mettre à jour correctement quelque chose. Par exemple, lorsque vous mettez à jour manuellement votre fichier WordPress vers une nouvelle version, la plate-forme vous demandera de cliquer sur un bouton pour mettre à jour la base de données.

Supposons que vous utilisiez des options dans le plugin. Au fur et à mesure que le plugin évolue, vous aurez besoin de plus d'options dans la nouvelle version. Il est facile de créer de nouvelles options lorsque l'utilisateur active d'abord le plugin, il vous suffit d'utiliser le crochet d'activation.

Par exemple, regardons le code suivant:

function my_awesome_plugin_activation() {
    update_option('my_awesome_plugin_option', 'default value');
}
register_activation_hook(__FILE__, 'my_awesome_plugin_activation');
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Si vous n'êtes pas familier avec l'utilisation update_option() au lieu de add_option(), ne vous inquiétez pas, nous l'expliquerons plus tard lorsque vous discutez de la façon de gérer le processus de mise à jour.

Si vous souhaitez une nouvelle option, ou si vous mettez à jour la valeur d'une option existante dans une nouvelle version, vous devez mettre à jour la base de données utilisateur qui utilise déjà votre plugin, nous avons donc besoin d'une fonction qui est appelée immédiatement après la mise à jour .

L'activation du crochet peut être un peu déroutant. Après tout, lorsque vous mettez automatiquement à jour le plugin, il est désactivé et réactivé, nous pouvons donc nous attendre à ce que ce crochet soit appelé. Mais ce n'est pas le cas.

Plus précisément, c'était le cas, mais WordPress a arrêté ce comportement dans la version 3.1. L'équipe de développement a expliqué cette option et vous pouvez lire l'explication complète du blog Make WordPress Core. La raison principale est qu'elle ne s'appelle pas à chaque fois, car si l'utilisateur met à jour manuellement le plugin, le crochet d'activation peut être ignoré.

Par conséquent, WordPress ne fournit pas de méthode par défaut pour appeler automatiquement les fonctions après les mises à jour du plug-in. C'est pourquoi vous devez créer votre propre processus.

comment gérer le processus de mise à jour

Dans cette partie de ce tutoriel, je vais vous montrer comment appeler automatiquement une fonction donnée après la mise à jour du plugin. Nous verrons dans la section suivante comment gérer correctement la mise à jour des options existantes et la création de nouvelles options (dans la même fonction).

Principe de cette méthode

Le principe global de notre méthode est que nous stockons le numéro de version du plugin à deux endroits: constantes dans le fichier principal du plugin et les options de la base de données.

Les numéros de la base de données stockeront la version actuellement installée de l'utilisateur, tandis que les numéros dans la constante sont la version actuelle. Si ces deux numéros sont différents, les options de base de données n'ont pas été mises à jour depuis la dernière mise à jour du plugin, nous devons donc le faire.

Dans ce cas, nous appellerons une fonction qui met à jour toutes les options nécessaires. Cette fonction met également à jour le numéro de version stocké dans la base de données: afin que nous n'atteignions pas cette fonction.

constant

Maintenant que nous avons couvert ce que nous allons faire, il est temps d'écrire du code! Tout d'abord, ajoutez une définition constante dans le fichier principal du plugin et prenez votre numéro de version actuel comme valeur. Pour éviter tout problème, nous testons s'il n'a pas encore existé.

function my_awesome_plugin_activation() {
    update_option('my_awesome_plugin_option', 'default value');
}
register_activation_hook(__FILE__, 'my_awesome_plugin_activation');
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Habituellement, la version du plugin utilise une identité numérique, mais n'hésitez pas à l'utiliser si vous utilisez un système différent. La seule contrainte ici est de fournir un identifiant unique pour chaque version ou du moins pour chaque version qui doit modifier la base de données (nouvelles options, nouvelles défaillances, etc.).

Vérifiez la fonction

Nous devons maintenant écrire une fonction pour vérifier si la base de données doit être mise à jour. Cette fonction compare les constantes précédemment définies avec les valeurs actuellement stockées dans la base de données. Pour ce faire, nous nous assurerons que notre fonction est appelée n'importe où, en utilisant l'action plugins_loaded, qui sera déclenchée une fois tous les plugins chargés.

if (!defined('MY_AWESOME_PLUGIN_VERSION'))
    define('MY_AWESOME_PLUGIN_VERSION', '3.4.1');
Copier après la connexion
Copier après la connexion
Copier après la connexion

Cette fonction sera simple. Nous récupérons le numéro de version stocké dans la base de données, comme toute autre option, et le comparons à la constante. Si ces valeurs sont différentes, nous appellerons la fonction my_awesome_plugin_activation().

function my_awesome_plugin_check_version() {
}

add_action('plugins_loaded', 'my_awesome_plugin_check_version');
Copier après la connexion
Copier après la connexion
Copier après la connexion

Maintenant, nous devons clarifier certains problèmes. Tout d'abord, que se passe-t-il si l'option n'existe pas encore dans la base de données? Si l'option n'existe pas, get_option() renvoie False, ce qui est différent de votre numéro de version, donc la fonction sera appelée.

Alors pourquoi appelons-nous la fonction d'activation? Pour être clair, nous pouvons créer une nouvelle fonction spécifiquement utilisée pour le processus de mise à jour. Cependant, si vous faites cela, vous verrez que cette nouvelle fonction sera très similaire à l'activation, car les options de mise à jour peuvent être les mêmes que la création d'options.

Mettez à jour le numéro de version dans la base de données

Vous pouvez faire ce que vous voulez dans la fonction d'activation appelée ci-dessus. Cependant, une chose est nécessaire, et c'est de mettre à jour le numéro de version stocké dans la base de données. De cette façon, nous n'appelons pas nos fonctions chaque fois que la page est chargée.

function my_awesome_plugin_activation() {
    update_option('my_awesome_plugin_option', 'default value');
}
register_activation_hook(__FILE__, 'my_awesome_plugin_activation');
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Veuillez noter l'astuce: nous n'utilisons pas add_option(), utilisez uniquement update_option(). En fait, si l'option n'existe pas encore, update_option() le créera. S'il existe, il mettra à jour sa valeur à la valeur indiquée. C'est pourquoi nous pouvons utiliser notre fonction d'activation comme une fonction de mise à jour sans aucun problème.

Mise à jour les options

N'écrasez pas les choix de l'utilisateur!

La mise à jour de n'importe quelle option est de la même manière que nous mettons à jour le numéro de version: vous pouvez appeler update_option() et c'est fait, même si c'est la première fois que WordPress voit l'option.

Cependant, nous ne voulons pas toujours mettre à jour les valeurs d'option. En fait, si vous utilisez des options, c'est généralement pour que vos utilisateurs personnalisent les paramètres. En utilisant update_option(), vous écraserez les choix de l'utilisateur chaque fois que vous mettez à jour le plugin, ce qui n'est pas ce que nous voulons faire.

ci-dessus, nous voyons que si l'option n'existe pas, get_option() renvoie false. Nous utiliserons ce comportement pour tester si l'option que nous souhaitons mettre à jour existe dans la base de données. Si tel est le cas, nous ne faisons rien. Sinon, nous créons cette option.

if (!defined('MY_AWESOME_PLUGIN_VERSION'))
    define('MY_AWESOME_PLUGIN_VERSION', '3.4.1');
Copier après la connexion
Copier après la connexion
Copier après la connexion

Veuillez noter que ce test est nécessaire pour les options que nous ne voulons pas remplacer. Dans certains cas, nous voulons peut-être le faire, compte tenu du numéro de version, nous ne voulons certainement pas garder l'ancienne valeur!

Cas spéciale - Array

Vous devez savoir que WordPress permet aux tableaux de stocker les valeurs de nos options, et les créer n'est pas plus difficile que de créer d'autres options. Par exemple:

function my_awesome_plugin_check_version() {
}

add_action('plugins_loaded', 'my_awesome_plugin_check_version');
Copier après la connexion
Copier après la connexion
Copier après la connexion

Si vous avez besoin de plusieurs paramètres, l'utilisation de tableaux est une bonne idée. De cette façon, vous n'utilisez pas beaucoup d'entrées dans la base de données et vous limitez les chances d'un autre plugin en utilisant des options avec le même nom. Cependant, cela peut causer des problèmes lorsque nous considérons le processus de mise à jour.

Pour comprendre les raisons, disons que vous avez un tableau comme une option avec certaines clés. Vos utilisateurs personnaliseront sûrement ces valeurs. En utilisant les tests que nous avons effectués ci-dessus, nous ne pouvons créer l'option que s'il n'existe pas et ces choix ne sont pas écrasés. Cela semble simple, mais que se passe-t-il si vous voulez créer une nouvelle clé dans un tableau?

Si l'option existe dans la base de données, le code précédent ne le créera pas, donc votre nouvelle clé n'existera pas. Cependant, si nous supprimons la condition, le tableau récupérera sa valeur par défaut chaque fois qu'une nouvelle mise à jour. Pas idéal. Heureusement, il y a une solution!

Tout d'abord, nous définissons un tableau contenant les valeurs par défaut des options (si une nouvelle clé existe).

if (MY_AWESOME_PLUGIN_VERSION !== get_option('my_awesome_plugin_version'))
    my_awesome_plugin_activation();
Copier après la connexion
Copier après la connexion

Ensuite, nous récupérons le tableau actuellement stocké dans la base de données.

function my_awesome_plugin_activation() {
    update_option('my_awesome_plugin_option', 'default value');
}
register_activation_hook(__FILE__, 'my_awesome_plugin_activation');
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Maintenant, nous pouvons utiliser la fonction PHP array_merge() pour prendre notre tableau par défaut comme premier paramètre et le tableau de l'utilisateur comme deuxième paramètre. De cette façon, nous obtiendrons un tableau contenant toutes les touches définies dans le tableau $default et nous n'aurons aucune option qui n'existe pas. Si l'utilisateur modifie l'une des anciennes options, sa valeur est conservée. Avec array_merge(), nous gardons toujours les dernières définitions.

if (!defined('MY_AWESOME_PLUGIN_VERSION'))
    define('MY_AWESOME_PLUGIN_VERSION', '3.4.1');
Copier après la connexion
Copier après la connexion
Copier après la connexion

Enfin, nous utilisons update_option() pour stocker les résultats dans la base de données.

function my_awesome_plugin_check_version() {
}

add_action('plugins_loaded', 'my_awesome_plugin_check_version');
Copier après la connexion
Copier après la connexion
Copier après la connexion

Nous sommes presque terminés, mais si la fonction est exécutée pour la première fois, nous devons maintenant corriger une erreur que vous pourriez rencontrer.

Cette fonction est appelée lorsque le plugin est activé, ce que nous voulons. Cependant, dans ce cas, l'option n'existe pas encore, donc get_option() renvoie false. Le problème est que l'utilisation de false comme paramètre de array_merge() provoquera une erreur.

Ce que nous voulons est simple, si l'option n'existe pas, nous voulons que $option soit un tableau vide. Pour ce faire, nous pouvons utiliser le deuxième paramètre de get_option() qui indique la valeur par défaut à obtenir (afin de ne pas retourner false).

if (MY_AWESOME_PLUGIN_VERSION !== get_option('my_awesome_plugin_version'))
    my_awesome_plugin_activation();
Copier après la connexion
Copier après la connexion

Conclusion

Une fois que vous l'avez lu attentivement, le processus de gestion de la mise à jour des plugins WordPress n'est pas compliqué. Cependant, cela est important si vous utilisez des options, car il peut y avoir des problèmes sans options d'initialisation.

À l'heure actuelle, WordPress ne fournit pas de façon native de gérer les mises à jour du plug-in. En fait, étant donné les problèmes que nous avons énumérés ci-dessus, si nous voyons que ce type de fonctionnalité est introduit un jour, nous devons l'implémenter d'une manière similaire à ce tutoriel.

Vous pouvez obtenir le code de mon exemple de plugin ici. Considérez ce code comme un cadre pour implémenter votre propre processus de mise à jour du plugin WordPress. Si vous avez des commentaires, veuillez me le faire savoir dans les commentaires ci-dessous.

FAQ de mise à jour du plugin WordPress (FAQ)

Quelle est l'importance de mettre à jour régulièrement les plugins WordPress?

Les mises à jour régulières des plugins WordPress sont cruciales pour les raisons suivantes: Premièrement, les mises à jour incluent souvent de nouvelles fonctionnalités et fonctionnalités qui peuvent améliorer les performances du site Web. Deuxièmement, les mises à jour corrigent généralement les bogues et les vulnérabilités qui peuvent mettre en danger la sécurité du site Web. Enfin, les mises à jour garantissent la compatibilité avec la dernière version de WordPress, garantissant que votre site Web fonctionne bien et efficacement.

Comment assurer des mises à jour sûres de mon plugin WordPress?

Pour assurer des mises à jour de sécurité, assurez-vous de sauvegarder votre site Web avant de démarrer le processus de mise à jour. De cette façon, s'il y a des problèmes pendant le processus de mise à jour, vous pouvez facilement restaurer votre site Web à son état précédent. De plus, il est recommandé de tester les mises à jour sur le site de mise en scène avant de l'appliquer sur votre site en direct.

Que dois-je faire si la mise à jour du plugin échoue?

Si la mise à jour du plugin échoue, la première étape consiste à restaurer votre site Web à partir de la sauvegarde. Ensuite, essayez de déterminer la cause de l'échec. Cela pourrait être dû à un conflit avec un autre plugin ou thème, ou un problème de compatibilité avec votre version de WordPress. Une fois que vous avez identifié le problème, vous pouvez le résoudre vous-même ou contacter le développeur du plugin pour obtenir de l'aide.

Comment effectuer automatiquement le processus de mise à jour des plugins WordPress?

WordPress a des fonctionnalités intégrées qui vous permettent de mettre à jour automatiquement les plugins. Vous pouvez activer cette fonctionnalité en accédant à la section plug-in dans le tableau de bord WordPress, en sélectionnant le plug-in que vous souhaitez mettre à jour automatiquement et en cliquant sur Activer les mises à jour automatiques.

Si la mise à jour du plugin cause des problèmes avec mon site Web, puis-je annuler la mise à jour du plugin?

Oui, si la mise à jour du plugin cause des problèmes avec votre site Web, vous pouvez annuler la mise à jour du plugin. Il existe plusieurs plugins disponibles, tels que WP Rollback, qui vous permettent de restaurer facilement vers les versions précédentes du plugin.

Comment mettre à jour les plug-ins de WordPress avancés?

Le plug-in WordPress avancé est mis à jour de la même manière que le plug-in gratuit. Cependant, vous devez avoir une clé de licence valide pour accéder à la mise à jour. Après être entré dans la clé de licence, vous pouvez mettre à jour le plug-in à partir du tableau de bord WordPress.

Quelle est la meilleure façon de gérer les mises à jour de plusieurs sites WordPress?

Si vous gérez plusieurs sites WordPress, vous devrez peut-être passer beaucoup de temps à mettre à jour individuellement des plugins pour chaque site. Un moyen plus efficace consiste à utiliser des outils de gestion WordPress tels que ManageWP ou MainWP, qui vous permet de gérer les mises à jour pour tous vos sites Web à partir d'un seul tableau de bord.

Comment désactiver les mises à jour automatiques pour des plugins WordPress spécifiques?

Si vous souhaitez désactiver les mises à jour automatiques pour des plugins spécifiques, vous pouvez utiliser des plugins tels que les mises à jour faciles. Ce plugin vous permet de contrôler les mises à jour automatiques de chaque plugin de votre site Web.

Comment vérifier la compatibilité des mises à jour du plugin avec ma version de WordPress?

Avant de mettre à jour le plugin, vous pouvez vérifier sa compatibilité avec votre version WordPress en visitant la page du plugin sur le répertoire du plugin WordPress. Ici, vous trouverez des informations sur la compatibilité du plug-in avec différentes versions de WordPress.

Que dois-je faire si la mise à jour du plugin brise mon site Web?

Si la mise à jour du plugin brise votre site Web, la première étape consiste à restaurer votre site Web à partir de la sauvegarde. Ensuite, désactivez le plugin qui a causé le problème. Si vous ne pouvez pas accéder à votre tableau de bord WordPress, vous pouvez désactiver le plug-in via FTP en renommant le dossier plug-in dans le répertoire WP-Content / Plugins. Après avoir désactivé le plugin, vous pouvez dépanner ou contacter le développeur du plugin pour obtenir de l'aide.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal