it-swarm.com.de

Ist es eine gute Idee, ein bereits vorhandenes Plugin zu bearbeiten, um weitere Funktionen hinzuzufügen?

Ich muss einem Wordpress-Plugin ein relativ kleines Stück Funktionalität hinzufügen und habe die Möglichkeit, das Plugin entweder direkt zu bearbeiten oder das Plugin komplett zu verschrotten und den PHP -Code einer anderen Site erneut zu verwenden, um dasselbe zu tun. Nicht-Wordpress PHP Code für solch eine kleine Änderung umzuwandeln, scheint albern und ich habe die wenigen Zeilen von PHP, die ich beim Bearbeiten des Plugins verwenden würde. Meine Frage ist, ist es eine gute Idee, ein Plugin zu bearbeiten?

Ich weiß, dass beim Bearbeiten eines Themas die Änderungen verloren gehen, wenn die Änderungen direkt am alten Code vorgenommen werden, wenn das Thema aktualisiert wird. Passiert das auch für Plugins? Gibt es einen Weg, dies zu umgehen?

Für diejenigen, die sich fragen, wie kompliziert die Änderungen sind, werde ich kurz erklären. Der Kunde, den ich habe, möchte, dass ein Formular an einen Händler und den Benutzer gesendet wird. Aber unter bestimmten Umständen, abhängig von der E-Mail-Adresse des Benutzers (wenn es auf ".gov" oder ein paar andere Endungen endet ... ja, ich weiß, das ist nicht die beste Idee und ich habe versucht, den Kunden zu überzeugen, aber sie waren unnachgiebig) Der Kunde möchte, dass die E-Mail an eine andere Person gesendet wird. Dies könnte natürlich mit ein paar kleinen PHP Zeilen im Plugin behoben werden, aber das Plugin verfügt nicht über die Funktionalität für "bedingte Empfänger" basierend auf den vom Benutzer gesendeten Inhalten. Also möchte ich diese Funktionalität entweder nur für diese Site hinzufügen (wenn es schnell geht) oder das Plugin durch reines PHP ersetzen, was anscheinend mehr Probleme verursacht, als es anfänglich beheben würde. Zeit ist von entscheidender Bedeutung. Vielen Dank für deine Hilfe!

6
Rambo8000

Die wichtigste Frage, die Sie sich stellen müssen, ist Bin ich der Autor des Themas oder Plugins?. Wenn Ihre Antwort "Ja" lautet und Sie für die Aufrechterhaltung des Plugins oder Themas verantwortlich sind, ändern Sie es und ändern Sie es nach Ihren Wünschen.

Wenn Ihre Antwort Nein lautet, sollten Sie keine Änderungen daran vornehmen, nicht einmal eine Kleinigkeit wie ein einfacher Punkt .. Gleiches gilt für WordPress-Kerndateien. Der einfache Grund dafür ist, dass Sie wirdverlieren, was Sie mit dem Theme/Plugin/Core gemacht haben, wenn das Theme/Plugin/Core aktualisiert wird.

Ich würde empfehlen, dass Sie Ihr eigenes kleines Funktions-Plugin mit dieser zusätzlichen Funktionalität erstellen. Es ist schnell und einfach und erspart Ihnen später viele Tränen, da es nur dann überschrieben wird, wenn Sie es selbst tun.

5
Pieter Goosen

Im Allgemeinen möchten Sie Plugins nicht ändern, da Sie Ihre Änderungen beim nächsten Update verlieren. Bei Themen, bei denen Sie ein untergeordnetes Thema einrichten können, ist das etwas anders.

Wenn das Plugin die Funktion wp_mail() zum Versenden der E-Mails verwendet, können Sie versuchen, die Empfänger mithilfe des Filters wp_mail zu ändern.

Versuchen Sie, Ihr eigenes Plugin zu schreiben, um das Problem zu lösen.

Hier ist ein Beispiel für ein solches Plugin (ungetestet):

/* 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;
    }
);

wo Sie möglicherweise einige zusätzliche Haken benötigen, die vom Plugin bereitgestellt werden.

5
birgire

Ich denke, diejenigen von uns, die einige Jahre mit Wordpress gearbeitet haben, haben sich schuldig gemacht, dies auf die eine oder andere Weise getan zu haben. Ich musste Änderungen an einem Plugin vornehmen, das vom ursprünglichen Autor nicht mehr unterstützt wurde und Kompatibilitätsprobleme mit späteren Versionen von Wordpress hatte.

Es gibt Situationen, in denen das Bearbeiten eines vorhandenen Plugins, dessen Originalautor Sie nicht sind, akzeptiert wird:

  • Das Plugin wird nicht mehr gewartet oder unterstützt
  • Das Plugin weist einige offensichtliche Sicherheitsprobleme auf, die Ihren Server/Ihre Site gefährden könnten, und Sie möchten nicht auf ein Update warten und benötigen das Plugin

Dies sind wirklich die beiden einzigen Situationen, in denen das Bearbeiten eines Plugins akzeptabel ist. In einer idealen Welt würden alle Autoren von Wordpress-Plugins die Hooks/Filter-Funktionalität in Wordpress verwenden, damit wir sie problemlos erweitern und ändern können, ohne die Plugin-Dateien zu bearbeiten, aber wie wir alle wissen, gibt es viele schlecht geschriebene Plugins ohne Unterstützung für haken oder filter.

Wenn Sie einem Plugin etwas mehr Funktionalität hinzufügen möchten, ist mein erster Ratschlag, ein eigenes Plugin zu erstellen und die Funktionalität selbst zu schreiben. Es gibt jedoch Fälle, in denen Sie möglicherweise eine Javascript-Bibliothek entfernen und Ihre eigene in das Plugin aufnehmen möchten. Der Autor entscheidet sich jedoch dafür, die Includes zu integrieren und keine Wordpress-Funktionen zu verwenden. In solchen Situationen kann es schwierig werden, eine oder zwei Dateien zu bearbeiten.

In einer Situation, in der Sie Plugin-Dateien bearbeiten müssen (und dies ist ein letztes Szenario, nachdem Sie alle anderen Optionen untersucht haben), sollten Sie eine Änderungsdatei im Plugin-Verzeichnis behalten. Ich habe eine Datei namens "CHANGES.txt" und liste einfach die Dateien geändert, die Zeilennummer und wenn ich Zeit habe, werde ich auflisten, was ich getan habe. Sie können dann die Dateien unterscheiden, wenn Sie aktualisieren und sehen müssen, was sich geändert hat.

Die Methode des letzten Auswegs ist nicht ideal, sie hat ihre Mängel und verstößt ziemlich stark gegen die Gesetze der Programmierung. Wie ich bereits erwähnt habe, ist es manchmal erforderlich, Plug-In-Dateien zu bearbeiten, wenn das Plug-In schlecht geschrieben ist oder das Überschreiben/Erweitern in Ihrem Design oder benutzerdefinierten Plug-In nicht einfach möglich ist.

2