WordPress: Konflikt zwischen Updates und eigenen Änderungen auflösen

Wer in WordPress Änderungen an Plugins oder Themes vornimmt, kann anschließend deren Updates nicht mehr durchführen, ohne seine Änderungen zu verlieren. Mit ein bisschen Know-How ist aber auch das kein Problem und ein einfacher Prozess hilft, dass man nicht alle Änderungen erneut manuell eingeben muss.

Voraussetzung: Das Projekt sollte in einer Versionsverwaltung gehalten werden. Ich empfehle Git und ein Vorgehen wie in diesem Artikel beschrieben.

Aus aktuellem Anlass durchlaufe ich selbst nun diesen Prozess: Ich habe Änderungen am twentythirteen Theme vorgenommen und mit dem neuesten WordPress-Update wurde dieses Theme überarbeitet. Ich werde das im Folgenden als Beispiel verwenden.

Seine eigenen Änderungen als Patch erstellen

Ein Patch ist ein Code-Schnipsel, der nur Änderungen zu einem vorherigen Stand enthält. Mithilfe eines Patches lässt sich Code updaten und auf einen weiterentwickelten Stand bringen.

Genau so einen Patch erstelle ich nun. Ich mache das auf der Kommandozeile mit dem git-Befehl. Ich wechsle zunächst in mein Projektverzeichnis.

Zunächst suche ich die Revision vor meinen Anpassungen. Dazu geben ich ein:

git log wp-content/themes/twentythirteen/

Ich sehe nun alle Änderungen aufgelistet. Interessant ist die letzte Revision vor meinen Änderungen. Das ist in meinem Fall zugleich die erste Revision überhaupt

git_log_erste_revision

Den Hash der Revision (8688539889057a6f1ab34168f92b4825783555b3) merke ich mir.

Nun erstelle ich den Patch, wieder mit Hilfe von Git

git diff 8688539889057a6f1ab34168f92b4825783555b3 -- wp-content/themes/twentythirteen/ > ~/Temp/twentythirteen.patch

Der Patch wird in eine Datei geschrieben.

WordPress-Update durchführen

Da ich die Änderungen gesichert habe (und Aufgrund der Versionsverwaltung ohnehin nichts verloren gehen kann) führe ich nun über die WordPress-Administrationsoberfläche das Update durch. Das mache ich wie in dem oben erwähnten Artikel beschrieben lokal!

Bevor ich dann den Patch einspiele, committe ich zunächst den aktuellen Stand.

git commit -a -m "Update twentythirteen theme to 1.1"

Patch anwenden

Den Patch wende ich mithilfe des Unix-Tools patch an.

patch -p1 < ~/Temp/twentythirteen.patch

Der Patch lässt sich erfolgreich anwenden:

patching file wp-content/themes/twentythirteen/content.php
Hunk #1 succeeded at 32 (offset 2 lines).
patching file wp-content/themes/twentythirteen/footer.php
Hunk #1 succeeded at 15 (offset -1 lines).
patching file wp-content/themes/twentythirteen/functions.php
Hunk #1 succeeded at 250 (offset 8 lines).
patching file wp-content/themes/twentythirteen/js/functions.js
patching file wp-content/themes/twentythirteen/page.php
patching file wp-content/themes/twentythirteen/style.css
Hunk #4 succeeded at 2503 (offset 4 lines).
Hunk #5 succeeded at 2562 (offset 4 lines).
Hunk #6 succeeded at 2571 (offset 4 lines).

Zwar sind die Zeilennummern meiner Änderungen nicht mehr identisch zum ursprünglichen Stand, was man an der Meldung "...offset 4 lines" sieht, das Tool kann aber damit umgehen. Zur Sicherheit hat das patch-Tool einige .orig-Dateien angelegt, die ich nicht benötige und lösche.

Ich teste noch einmal kurz auf der WordPress-Seite, ob alles passt. Dann committe ich den Stand und erst jetzt, nachdem ich alle Schritte durchgeführt habe, pushe ich und deploye, wie hier beschrieben.

 

bjoerne_com_bjoern_weinbrenner_softwareentwickler_icon_leistungen_02

Lust auf mehr? Als Experte für WordPress und individuelle WordPress-Entwicklung kann ich Sie in Ihren Projekten unterstützen. Melden Sie sich gerne bei mir.

2017-01-28T13:52:44+00:00 01.11.2013|Tags: , , , , |0 Kommentare

Hinterlassen Sie einen Kommentar