Dzisiaj musiałem zaadaptować wtyczkę na blogu klienta tak, aby pasowała wizualnie do serwisu i posiadała również wersję niemiecką. Teraz problem polegał na tym, że klient zawsze sumiennie robił swoje aktualizacje w adminie Wordpressa.
Godna pochwały rzecz sama w sobie, ale kiedy zaktualizuje tę wtyczkę, wszystkie moje dostosowania w programowaniu zostaną nadpisane i znikną. Oczywiście, że to nie powinno się zdarzyć. Ale jestem na tyle realistyczny, by wiedzieć, że wspomnienie o tym tutaj nie powstrzyma nikogo przed robieniem przyszłych aktualizacji. Z tego powodu potrzebne jest tutaj rozwiązanie, które najlepiej w ogóle nie pokazuje aktualizacji w WP Admin.
Rozdziały w tym poście:
Rozwiązanie 1: Wyłącz wszystkie aktualizacje WordPress za pomocą wtyczki
Pierwszym sposobem wyboru tutaj jest wtyczka”Wyłącz wszystkie aktualizacje WordPress', który można znaleźć w repozytorium WordPress. Jest to, że tak powiem, „działo”, z którego strzelalibyśmy do „wróbli”, ponieważ tak naprawdę chcemy tylko uniemożliwić aktualizacje z wtyczki.
Jednak wtyczka „Wyłącz wszystkie aktualizacje WordPressa” nie tylko zapobiega aktualizacjom wszystkich wtyczek, ale także wszystkich zainstalowanych motywów i samego WordPressa. Oczywiście na dłuższą metę jest to duże zagrożenie dla bezpieczeństwa, którego nie brałem pod uwagę chcesz narazić klienta.
Rozwiązanie 2: wyłącz aktualizacje tylko określonej wtyczki
W moim przypadku klient powinien nadal mieć możliwość uruchamiania wszystkich wtyczek, ale jedna wtyczka, którą dostosowałem, musiałaby zostać wyłączona z aktualizacji. Jeśli w pewnym momencie nastąpi poważna aktualizacja wtyczki, zaimportowałbym ją ręcznie i ponownie wprowadził zmiany. W pewnym momencie staje się to ważne, aby wtyczka poradziła sobie również z większymi skokami wersji Wordpressa.
Bez zmian w functions.php
Ponieważ klient również pracuje tu i ówdzie nad motywem i być może wkrótce będzie szukał innego motywu, moim planem było wykluczenie rozwiązań, które działają ze skryptem w functions.php. Podczas zmiany motywu, functions.php nie jest automatycznie przyjmowany i można było przewidzieć, że coś pójdzie nie tak. Moim planem było dodanie kilku linijek kodu do dostosowanej wtyczki, aby nie odpytywała i nie wyświetlała aktualizacji.
W końcu znalazłam to, czego szukałam w ten wątek z stackoverflow, z którego otrzymałem następujące wiersze kodu:
// Wyłącz funkcję aktualizacji tej wtyczki add_filter('site_transient_update_plugins', 'remove_update_notification'); function remove_update_notification($wartość) { unset($wartość->odpowiedź[ plugin_basename(__FILE__)]); zwróć wartość $; }
Te linie kodu są kopiowane do głównego pliku wtyczki, który zwykle można znaleźć w folderze „wp-content/plugins/” zgodnie z tym schematem:
nazwa-wtyczki/nazwa-wtyczki.php
Aby przetestować kod, wypróbowałem wtyczkę „Ad-Inserter”, która wymagała tylko aktualizacji. Na zrzucie ekranu widać, gdzie zainstalowałem kod.
Po instalacji wywołałem listę wtyczek w panelu administracyjnym Wordpressa i oto: Wtyczka nie zgłasza już dostępnej aktualizacji (mimo że jest). Sprawa działa więc całkiem niezawodnie – testowałem ją do Wordpressa 5.4.1.
Mój wniosek
Zaletą tego rozwiązania jest to, że możesz konkretnie wykluczyć aktualizacje dla niektórych wtyczek i nie musisz wybierać „rozwiązania nuklearnego”, w którym zapobiega się wszystkim aktualizacjom. Jeśli chcesz ukryć aktualizacje z wielu wtyczek, skopiuj ten sam kod do głównego pliku każdej z tych wtyczek.
To, co szczególnie podoba mi się w kodzie, to fakt, że możesz go skopiować i wkleić bezpośrednio w ten sposób. W przypadku innych rozwiązań nadal musisz wprowadzić ścieżkę do pliku i nazwę pliku PHP w kodzie, aby działał. Tutaj został odczytany za pomocą funkcji „plugin_basename”, co jest bardzo wygodne.
Related Stories
Jens prowadzi bloga od 2012 roku. Pełni rolę Sir Apfelot dla swoich czytelników i pomaga im w problemach natury technicznej. W wolnych chwilach jeździ na elektrycznych monocyklach, robi zdjęcia (najlepiej iPhonem oczywiście), wspina się po górach Hesji lub wędruje z rodziną. Jego artykuły dotyczą produktów Apple, nowości ze świata dronów czy rozwiązań aktualnych błędów.