web-dev-qa-db-fra.com

Bonne façon de modifier le plugin

Quel est le meilleur moyen de modifier un plugin? Je souhaite souvent apporter de petites modifications à une ou deux fonctions dans un gros plugin. Ceci est facile à faire, mais je dois utiliser des commentaires pour marquer mes modifications et modifier à nouveau le plugin après une mise à jour. Idéalement, j'aimerais laisser le plugin seul et apporter mes modifications ailleurs, un peu comme nous le faisons avec des thèmes et des thèmes enfants. Puis-je créer un plugin qui nécessite le plugin parent et qui le remplacera?

14
Mike Wheaton

IMHO, la meilleure approche consiste soit à créer le plugin pour conserver vos modifications, soit à soumettre des correctifs au développeur du plugin pour que vos modifications soient intégrées au plugin d'origine.

Créer un "plugin enfant" n'est vraiment pas facile. Le concept "Child Theme" s’applique vraiment aux fichiers de modèle qui sont utilisés, plus que les fonctions de thème (et en fait, le fichier functions.php de Parent et Child est chargé, ce que cause pose des problèmes pour functions.php mal codés dans le thème enfant ou parent).

7
Chip Bennett

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

Par exemple, si un plugin a une fonction liée à WordPress avec une action, il vous suffit de créer un autre plugin qui décroche le fonctionnement de remove_action, puis ajoute la fonction de remplacement correspondante. Ce type de méthode vous permettra de remplacer des fonctions individuelles de plug-ins par vos propres versions modifiées, sans modifier le plug-in d'origine.

Même concept fonctionne avec des filtres, évidemment.

7
Otto

Le meilleur moyen serait simplement de le cloner, de changer le nom du plug-in dans l'en-tête et de changer le nom du répertoire. De cette façon, vous pouvez également installer l'original, mais ne pas l'activer, afin de toujours recevoir des alertes lorsque les mises à jour sont 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
*/
?>
4
Chris_O

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 viens de créer une branche et de valider mes modifications.

Lorsque le plug-in est mis à jour en amont, je tire simplement du référentiel svn et fusionne dans ma branche personnalisée.

2
scribu

Ceci est relativement facile si le plugin est sous le contrôle des sources 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 branches du fournisseur et svn_load_dirs.php si je vraiment doit modifier un plugin, mais cela nécessite un niveau de confort raisonnablement élevé avec Subversion.

Si le plug-in ne présente aucun référentiel, nous vous recommandons de le transformer vous-même en référentiel Git et d'appliquer manuellement les nouvelles versions.

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

2
Annika Backstrom