Richtige Möglichkeit zum Ändern des Plugins

15

Was ist der beste Weg, um ein Plugin zu modifizieren? Ich möchte häufig kleine Änderungen an einer oder zwei Funktionen in einem großen Plugin vornehmen. Dies ist einfach, aber ich muss Kommentare verwenden, um meine Änderungen zu markieren und das Plugin nach einem Update erneut zu ändern. Im Idealfall möchte ich das Plugin in Ruhe lassen und meine Änderungen an anderer Stelle vornehmen, ähnlich wie wir es mit Themen und untergeordneten Themen tun. Kann ich ein Plugin erstellen, das das übergeordnete Plugin erfordert und dieses überschreibt?

Mike Wheaton
quelle
1
Aktivieren Sie "Ohne Änderung erweitern" . Ich halte dies für die praktisch bessere Lösung. Überprüfen Sie diesen Link für Details - Der richtige Weg, um ein WordPress-Plugin
anzupassen

Antworten:

7

Meiner Meinung nach besteht der beste Ansatz darin, entweder das Plugin zu erweitern, um Ihre Änderungen beizubehalten, oder Patches an den Plugin-Entwickler zu senden, damit Ihre Änderungen Teil des ursprünglichen Plugins werden.

Das Erstellen eines "Child Plugins" ist wirklich nicht einfach. Das „Child Theme“ -Konzept gilt eigentlich für die Template - Dateien , die zu gewöhnen, um so mehr , als die Theme - Funktionen (und in der Tat, die functions.phpDatei von Eltern und Kind bekommen geladen, die funktioniert für falsch codierte Probleme verursachen functions.phpDateien entweder das Kind oder Elternteil Thema).

Chip Bennett
quelle
Die Art der Änderungen, die ich vornehme, ist ortsspezifisch und daher halte ich es nicht für angebracht, Patches zu forken oder einzusenden. Ich werde diese definitiv berücksichtigen, um allgemeinere Verbesserungen an Plugins zu erzielen.
Mike Wheaton
Aber Gabeln ist im Grunde das, was Sie bereits tun . Grundsätzlich stehen Ihnen folgende Optionen zur Verfügung: Fork oder Patch. @Chris_O bietet eine gute Möglichkeit, automatische Updates vom Upstream abzurufen, während Sie Ihr gespaltenes Plugin beibehalten.
Chip Bennett
7

Der "richtige" Weg hängt natürlich vom Plugin ab. Einige Plugins sind einfacher zu bearbeiten als andere, aber die meisten Plugins können tatsächlich von anderen Plugins geändert werden.

Wenn ein Plugin beispielsweise eine Funktion hat, die mit einer Aktion in WordPress verknüpft ist, können Sie ganz einfach ein anderes Plugin erstellen, das diese Funktion mit remove_action deaktiviert und stattdessen Ihre Ersetzungsfunktion hinzufügt. Mit dieser Methode können Sie einzelne Funktionen in Plugins durch Ihre eigenen geänderten Versionen ersetzen, ohne das ursprüngliche Plugin zu ändern.

Dasselbe Konzept funktioniert natürlich mit Filtern.

Otto
quelle
4

Der beste Weg wäre, es einfach zu klonen und den Plugin-Namen in der Kopfzeile zu ändern und den Verzeichnisnamen zu ändern. Auf diese Weise könnte auch das Original installiert, aber nicht aktiviert werden, sodass Sie weiterhin Benachrichtigungen erhalten, wenn Updates veröffentlicht werden.

<?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
quelle
Dazu müssen Sie immer noch neue Versionen des Plugins durchgehen, um nach Änderungen zu suchen (ich nehme an, ein Versionsvergleichstool würde helfen) und diese Änderungen dann in mein benutzerdefiniertes Plugin zu kopieren. Ich nehme an, ich könnte das Plugin herunterladen und SVN verwenden, um die Änderungen mit meiner benutzerdefinierten Version zusammenzuführen.
Mike Wheaton
2
Es gibt einen direkten Link zur Diff-Datei im Entwicklungsprotokoll auf der Plugins-Seite. Zum Beispiel wird hier diff aus W3 Total Cache
Chris_O
2

Dies ist relativ einfach, wenn sich das Plugin aufgrund der Verteilung von Git in der Git-Quellcodeverwaltung befindet, sich jedoch viele WordPress-Plugins (und alle im offiziellen Repository) in Subversion befinden. Ich verwende Vendor Branches und svn_load_dirs.php, wenn ich wirklich ein Plugin modifizieren muss, aber dies erfordert einen einigermaßen hohen Komfort mit Subversion.

Wenn das Plugin kein Repository zur Verfügung stellt, würde ich empfehlen, es selbst in ein Git-Repository umzuwandeln und neue Versionen manuell anzuwenden.

Letztendlich sind Versionskontrollsysteme die einzig vernünftige Möglichkeit, Änderungen an neuen Upstream-Versionen erneut anzuwenden.

Annika Backström
quelle
2

Ich stimme der Antwort von Annika Backstrom zu , möchte aber meine bevorzugte Lösung mitteilen.

Da die meisten Plugins unter svn laufen, benutze ich ein Tool namens git-svn, um einen Git-Spiegel zu erstellen.

Dann mache ich einfach eine Verzweigung und übertrage meine Änderungen dort.

Wenn das Plugin upstream aktualisiert wird, ziehe ich es einfach aus dem SVN-Repo und füge es in meinen benutzerdefinierten Zweig ein.

scribu
quelle