web-dev-qa-db-fra.com

Est-ce une bonne idée de modifier un plugin existant pour ajouter plus de fonctionnalités?

J'ai besoin d'ajouter un peu de fonctionnalités à un plugin Wordpress et j'ai la possibilité de le modifier directement ou de le supprimer complètement et de réutiliser le code PHP d'un autre site pour faire la même chose. Reprendre le code PHP non Wordpress pour un changement aussi minime semble ridicule et j'ai les quelques lignes de PHP que je voudrais utiliser lors de la modification du plug-in. Ma question est la suivante: est-ce une bonne idée de modifier un plugin?

Je sais que lors de la modification d'un thème, si les modifications sont apportées directement à l'ancien code, lorsque le thème est mis à jour, les modifications sont perdues. Est-ce que cela arrive aussi avec les plugins? Y a-t-il un moyen de contourner ceci?

Pour ceux qui se demandent à quel point les changements sont compliqués, je vais expliquer brièvement. Le client que j'ai a demandé qu'un formulaire soit envoyé à un revendeur et à l'utilisateur. Mais dans certaines circonstances, en fonction de l'adresse de messagerie de l'utilisateur (si elle se termine par ".gov" ou par quelques autres fins ... oui, je sais que ce n'est pas la meilleure idée et j'ai essayé de convaincre le client, mais ils étaient catégoriques) Le client veut que l'e-mail soit envoyé à quelqu'un d'autre. Naturellement, cela pourrait être corrigé avec quelques petites lignes PHP dans le plugin, mais celui-ci ne dispose pas des fonctionnalités pour les "destinataires conditionnels" basées sur le contenu envoyé par l'utilisateur. J'aimerais donc ajouter cette fonctionnalité uniquement pour ce site (si cela peut être fait rapidement) ou remplacer le plug-in par un php direct, ce qui semble causer plus de problèmes que ne le corrigerait initialement. Le temps presse. Je vous remercie beaucoup pour votre aide!

6
Rambo8000

La question la plus importante que vous devez vous poser est Suis-je l'auteur du thème ou du plugin?}. Si votre réponse est oui et que vous êtes responsable de la maintenance du plugin ou du thème, continuez, changez-le et modifiez-le à votre guise.

Si votre réponse est non, vous ne devriez y apporter aucune modification, pas même une petite chose comme un simple point .. Il en va de même pour les fichiers de base WordPress. La raison simple étant, comme vous l'avez dit, si le thème/plugin/core est mis à jour, vous allez perdez ce que vous avez fait pour le thème/plugin/core.

Je vous recommande de créer votre propre petit plugin fonctionnalité avec cette fonctionnalité supplémentaire. C'est rapide et facile, et vous épargnera beaucoup de larmes plus tard, car il ne sera pas écrasé à moins que vous ne le fassiez vous-même.

5
Pieter Goosen

En général, vous ne voulez pas modifier les plugins, car vous perdrez vos modifications lors de leur prochaine mise à jour. C'est un peu différent pour les thèmes, où vous pouvez configurer un thème enfant.

Si le plug-in utilise la fonction wp_mail() pour envoyer les emails, vous pouvez essayer d'utiliser le filtre wp_mail pour modifier les destinataires.

Essayez d'écrire votre propre plugin pour résoudre le problème.

Voici un exemple d'un tel plugin (non testé):

/* Plugin Name: Change recipients for .gov emails */

add_filter( 'wp_mail', 
    function ( $args ) {

        // Check if the recipent's email ends with .gov         
        if( 'vog.' === strtolower( substr( strrev( $args['to'] ), 0, 4 ) ) )
        {
            // Replace it with a new email address:
            $args['to'] = '[email protected]';
        }

        return $args;
    }
);

où vous pourriez avoir besoin de quelques crochets supplémentaires fournis par le plugin.

5
birgire

Je pense que ceux d'entre nous qui travaillent avec Wordpress depuis quelques années se sont rendus coupables de l'avoir fait à un moment ou à un autre. J'ai dû modifier un plugin qui n'était plus pris en charge par l'auteur d'origine et j'ai rencontré des problèmes de compatibilité avec les versions ultérieures de Wordpress.

Il y a des situations où l'édition d'un plugin existant dont vous n'êtes pas l'auteur original est acceptée:

  • Le plugin n'est plus maintenu ni supporté
  • Le plugin présente des problèmes de sécurité criants qui pourraient compromettre votre serveur/site et vous ne voulez pas attendre une mise à jour et vous avez besoin du plugin.

Ce sont vraiment les deux seules situations auxquelles je peux penser où éditer un plugin est acceptable. Dans un monde idéal, tous les auteurs de plugins Wordpress utiliseraient les fonctionnalités de hooks/filtres de Wordpress afin que nous puissions facilement les étendre et changer des choses sans modifier les fichiers du plugin, mais comme nous le savons tous, il existe de nombreux plugins mal écrits sans support. pour les crochets ou les filtres.

Si vous avez besoin d'ajouter plus de fonctionnalités à un plugin, mon premier conseil serait de construire votre propre plugin et d'écrire la fonctionnalité vous-même. Cependant, dans certains cas, vous voudrez peut-être supprimer une bibliothèque Javascript et inclure la vôtre dans le plug-in, mais l'auteur décide d'inclure les inclusions et de ne pas utiliser les fonctions Wordpress. C’est là que des situations comme celle-ci peuvent devenir délicates, car vous devrez éditer un fichier ou deux.

Dans une situation où vous devez éditer des fichiers de plug-in (et ceci est un dernier cas après avoir exploré toutes les autres options), vous devez conserver un fichier de modifications dans le répertoire du plug-in. J'ai un fichier appelé "CHANGES.txt" et les fichiers ont changé, le numéro de ligne et si j'en ai le temps, je vais énumérer ce que j'ai fait. Vous pouvez ensuite différencier les fichiers si vous devez mettre à jour et voir ce qui a changé.

La méthode de dernier recours n'est pas idéale, elle a ses défauts et va à l'encontre des lois de la programmation. Mais, comme je l'ai mentionné, il est parfois nécessaire de modifier les fichiers de plug-in si le plug-in est mal écrit ou ne permet pas facilement de surcharger/étendre votre thème ou votre plug-in personnalisé.

2
Dwayne Charrington