Dieses Problem ist mir schon oft begegnet. Wie andere bereits gesagt haben, können Sie PHP-Funktionen nicht ändern. Das Erweitern der Klasse wird nicht funktionieren, da das Plugin die Originalklasse instanziiert, nicht Ihre erweiterte Version.
Die beste Lösung (die bei mir schon mehrmals funktioniert hat) ist, dem vorhandenen Plugin Hooks hinzuzufügen und es wie folgt an den ursprünglichen Autor zurückzuschicken:
- Wenn das Original-Plugin auf Github ist, forken und klonen Sie es. Andernfalls legen Sie das Original-Plugin unter
git
Kontrolle vor Ort. Möglicherweise müssen Sie später ein Diff oder Rollback durchführen.
- Erstellen Sie ein neues Plugin namens WPML-extensions (oder so ähnlich)
- Suchen Sie im ursprünglichen Plugin-Code nach zu verwendenden Aktionen oder Filtern. Wenn sie bereits verfügbar sind und das tun, was Sie brauchen, verwenden Sie sie, indem Sie sie mit dem WPML-Extensions-Plugin verknüpfen.
- Wenn die richtigen Hooks im WPML-Plugin nicht vorhanden sind, fügen Sie sie hinzu und folgen Sie dann dem obigen Schritt. Versuchen Sie, die neueste Version des Original-Plugins zu verwenden, um die Chancen zu erhöhen, dass Ihre Änderungen akzeptiert werden.
- Wenn Sie das ursprüngliche Plugin durch Hinzufügen von Aktionen oder Filtern geändert haben, führen Sie eine
git diff
um den Patch zu speichern, damit Sie ihn später wieder anwenden können. Senden Sie den Patch an den ursprünglichen Plugin-Autor und hoffen Sie auf das Beste. Wenn Sie sich nur auf Aktionen und Filter beschränkt haben, wird der Autor Ihre Änderungen höchstwahrscheinlich sofort akzeptieren.
- Wenn Sie das ursprüngliche Plugin später aktualisieren, müssen Sie Ihre Änderungen erneut vornehmen, bis sie akzeptiert werden. Sie können diese Diff-Datei verwenden. Vielleicht gibt es eine Möglichkeit, die
git rebase
um die Änderungen wiederzugeben, die Sie nach der Aktualisierung des Plugins vorgenommen haben.