Bonne façon de modifier le plugin

15

Quelle est la meilleure façon de modifier un plugin? Je souhaite souvent apporter de petites modifications à une ou deux fonctions dans un gros plugin. Cela se fait facilement, mais je dois utiliser des commentaires pour marquer mes changements et modifier à nouveau le plugin après une mise à jour. Idéalement, je voudrais laisser le plugin seul et apporter mes modifications ailleurs, un peu comme nous le faisons avec les thèmes et les thèmes enfants. Puis-je créer un plugin qui nécessite le plugin parent et le remplacera?

Mike Wheaton
la source
1
Cochez «Étendre sans modifier» . Je considère que c'est la meilleure solution. Consultez ce lien pour plus de détails - La bonne façon de personnaliser un plugin WordPress
Eugine Joseph

Réponses:

7

À mon humble avis, la meilleure approche consiste soit à bifurquer le plugin pour maintenir vos modifications, soit à soumettre des correctifs au développeur du plugin, pour que vos modifications fassent partie du plugin d'origine.

Créer un "plugin enfant" n'est vraiment pas facile. Le concept "Thème enfant" s'applique vraiment aux fichiers modèles qui sont utilisés, plus que les fonctions Thème (et en fait, le functions.phpfichier des parents et des enfants est chargé, ce qui pose des problèmes pour les functions.phpfichiers mal codés dans l'enfant ou le parent) Thème).

Chip Bennett
la source
Les types de changements que j'apporte sont spécifiques au site et je ne pense donc pas que le forking ou la soumission de correctifs serait approprié. Je garderai certainement cela à l'esprit pour des améliorations plus générales des plugins.
Mike Wheaton
Mais la fourche est essentiellement ce que vous faites déjà . Fondamentalement, ce sont vos options: fork ou patch. @Chris_O donne un bon moyen de pouvoir récupérer des mises à jour automatiques en amont, tout en maintenant votre plugin forké.
Chip Bennett
7

La "bonne" façon dépend évidemment du plugin. Certains plugins sont plus faciles à modifier que d'autres, mais la plupart des plugins peuvent en fait être modifiés par d'autres plugins.

Par exemple, si un plugin a une fonction connectée à WordPress avec une action, il vous suffit de créer un autre plugin qui décroche cette fonction avec remove_action, puis ajoute votre fonction de remplacement à la place. Ce type de méthode vous permettra de remplacer les fonctions individuelles des plugins par vos propres versions modifiées, sans modifier le plugin d'origine.

Le même concept fonctionne avec les filtres, évidemment.

Otto
la source
4

La meilleure façon serait de simplement le cloner et de changer le nom du plugin dans l'en-tête et de changer le nom du répertoire. De cette façon, vous pouvez également avoir l'original installé mais pas activé, vous recevrez donc des alertes lorsque les mises à jour seront publiées.

<?php
/*
Plugin Name: Name Of The Plugin
Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates
Description: A brief description of the Plugin.
Version: The Plugin's Version Number, e.g.: 1.0
Author: Name Of The Plugin Author
Author URI: http://URI_Of_The_Plugin_Author
License: A "Slug" license name e.g. GPL2
*/
?>
Chris_O
la source
Cela nécessite toujours de passer par de nouvelles versions du plugin pour trouver des changements (je suppose qu'un outil de comparaison de versions aiderait) puis de copier ces changements sur mon plugin personnalisé. Je suppose que je pourrais télécharger le plugin et utiliser SVN pour fusionner les modifications avec ma version personnalisée.
Mike Wheaton
2
Il existe un lien direct vers le fichier diff sur le lien du journal de développement sur la page des plugins. Par exemple, ici est diff généré à partir de W3 Total Cache
Chris_O
3

C'est relativement facile si le plugin est sous contrôle de source Git en raison de la nature distribuée de Git, mais de nombreux plugins WordPress (et tous ceux du référentiel officiel) sont dans Subversion. J'utilise des branches de fournisseurs et svn_load_dirs.php si j'ai vraiment besoin de modifier un plugin, mais cela nécessite un niveau de confort assez élevé avec Subversion.

Si le plugin n'expose aucun référentiel, je vous recommande de le transformer vous-même en référentiel Git et d'appliquer manuellement de nouvelles versions.

En fin de compte, les systèmes de contrôle de version sont le seul moyen sensé de réappliquer les modifications aux nouvelles versions en amont.

Annika Backstrom
la source
3

je suis d'accord avec la réponse d'Annika Backstrom , mais j'aimerais partager ma solution préférée.

Comme la plupart des plugins sont sous svn, j'utilise un outil appelé git-svn pour créer un miroir git.

Ensuite, je crée simplement une branche et j'y valide mes modifications.

Lorsque le plugin est mis à jour en amont, je tire simplement du dépôt svn et je fusionne dans ma branche personnalisée.

scribu
la source