Właściwy sposób modyfikacji wtyczki

15

Jaki jest najlepszy sposób modyfikacji wtyczki? Często chcę wprowadzać małe zmiany w jednej lub dwóch funkcjach w dużej wtyczce. Można to łatwo zrobić, ale muszę użyć komentarzy, aby zaznaczyć moje zmiany i ponownie zmodyfikować wtyczkę po aktualizacji. Idealnie chciałbym zostawić wtyczkę w spokoju i wprowadzić zmiany w innym miejscu, podobnie jak w przypadku motywów i motywów potomnych. Czy mogę utworzyć wtyczkę, która wymaga wtyczki nadrzędnej i ją zastąpi?

Mike Wheaton
źródło
1
Zaznacz „Rozszerz bez modyfikacji” . Uważam, że jest to praktycznie lepsze rozwiązanie. Sprawdź ten link, aby uzyskać szczegółowe informacje - Właściwy sposób na dostosowanie wtyczki WordPress
Eugine Joseph

Odpowiedzi:

7

IMHO, najlepszym rozwiązaniem jest rozwidlenie wtyczki, aby zachować zmiany, lub przesłanie łat do programisty wtyczki, aby zmiany stały się częścią oryginalnej wtyczki.

Utworzenie „wtyczki podrzędnej” naprawdę nie jest łatwe. „Dziecko Motyw” koncepcji naprawdę odnosi się do plików szablonów , które przyzwyczaić, moreso niż funkcji tematu (aw rzeczywistości functions.phpplik zarówno rodzice i dzieci są ładowane, co ma powodować problemy dla nieprawidłowo zakodowanych functions.phpplików w obu dziecka lub rodzica Motyw).

Chip Bennett
źródło
Rodzaje zmian, które wprowadzam, są specyficzne dla witryny, więc nie sądzę, że rozwidlenie lub przesłanie łat byłoby właściwe. Na pewno będę o tym pamiętać, aby uzyskać ogólne ulepszenia wtyczek.
Mike Wheaton
Ale rozwidlenie jest w zasadzie tym, co już robisz . Zasadniczo są to twoje opcje: fork lub patch. @Chris_O daje dobry sposób na pobieranie automatycznych aktualizacji z góry, przy jednoczesnym utrzymaniu rozwidlonej wtyczki.
Chip Bennett
7

„Właściwy” sposób zależy oczywiście od wtyczki. Niektóre wtyczki są łatwiejsze do edycji niż inne, ale większość wtyczek może być modyfikowana przez inne wtyczki.

Na przykład, jeśli wtyczka ma funkcję podpiętą do WordPressa za pomocą akcji, wtedy łatwo jest utworzyć inną wtyczkę, która odblokuje tę funkcję z remove activity, a następnie doda w zamian funkcję zastępczą. Ten rodzaj metody pozwoli ci zastąpić poszczególne funkcje wtyczek własnymi zmodyfikowanymi wersjami, bez modyfikowania oryginalnej wtyczki.

Oczywiście ta sama koncepcja działa z filtrami.

Otto
źródło
4

Najlepszym sposobem byłoby po prostu sklonowanie go i zmiana nazwy wtyczki w nagłówku oraz zmiana nazwy katalogu. W ten sposób można również zainstalować oryginał, ale go nie aktywować, aby nadal otrzymywać powiadomienia o wydaniu aktualizacji.

<?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
źródło
Nadal wymaga to przejrzenia nowych wersji wtyczki w celu znalezienia zmian (przypuszczam, że narzędzie do porównywania wersji pomogłoby), a następnie skopiowania tych zmian do mojej niestandardowej wtyczki. Przypuszczam, że mógłbym pobrać wtyczkę i użyć SVN do scalenia zmian z moją niestandardową wersją.
Mike Wheaton
2
Bezpośredni link do pliku diff znajduje się w dzienniku programowania na stronie wtyczek. Na przykład tutaj jest generowana różnica z W3 Total Cache
Chris_O
3

Jest to stosunkowo łatwe, jeśli wtyczka znajduje się pod kontrolą źródła Git ze względu na rozproszony charakter Git, ale wiele wtyczek WordPress (i wszystkie z oficjalnego repozytorium) jest w Subversion. Używam gałęzi dostawcy i svn_load_dirs.php, jeśli naprawdę muszę zmodyfikować wtyczkę, ale wymaga to dość wysokiego poziomu komfortu w Subversion.

Jeśli wtyczka nie ujawnia żadnego repozytorium, polecam samodzielne przekształcenie go w repozytorium Git i ręczne zastosowanie nowych wersji.

W końcu systemy kontroli wersji to jedyny rozsądny sposób ponownego zastosowania zmian w nowych wersjach.

Annika Backstrom
źródło
3

Zgadzam się z odpowiedzią Anniki Backstrom , ale chciałbym podzielić się moim preferowanym rozwiązaniem.

Ponieważ większość wtyczek jest pod svn, używam narzędzia o nazwie git-svn, aby utworzyć lustro git.

Następnie tworzę gałąź i tam zatwierdzam zmiany.

Kiedy wtyczka jest aktualizowana w górę, po prostu ściągam z repozytorium svn i łączę się z moją niestandardową gałęzią.

scribu
źródło