Zapobiegaj aktualizacjom wtyczek WordPress dla określonej wtyczki

Zapobiegaj aktualizacjom wtyczek WordPress za pomocą kodu PHP

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.

Dzięki wtyczce „Wyłącz wszystkie aktualizacje WordPress” wszystkie aktualizacje są blokowane - nawet te z rdzenia WordPress.
Dzięki wtyczce „Wyłącz wszystkie aktualizacje WordPress” wszystkie aktualizacje są blokowane - nawet te z rdzenia WordPress.

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.

Aby przetestować kod, wybrałem wtyczkę „Ad Inserter”, która właśnie ogłosiła aktualizację na moim blogu Wordpress.
Aby przetestować kod, wybrałem wtyczkę „Ad Inserter”, która właśnie ogłosiła aktualizację na moim blogu Wordpress.

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.

Tutaj możesz zobaczyć linie kodu, które skopiowałem na początek kodu wtyczki.
Tutaj możesz zobaczyć linie kodu, które skopiowałem na początek kodu wtyczki.

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.

Po wklejeniu kodu wtyczka nie będzie już pokazywać dostępnej aktualizacji w panelu administracyjnym Wordpressa.
Po wklejeniu kodu wtyczka nie będzie już pokazywać dostępnej aktualizacji w panelu administracyjnym Wordpressa.

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.

Podobał Ci się artykuł i czy instrukcje na blogu Ci pomogły? Wtedy byłbym szczęśliwy, gdybyś bloga poprzez stałe członkostwo będzie wspierać.

Napisz komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone * oznakowane

Na blogu Sir Apfelot znajdziesz porady, instrukcje i recenzje produktów Apple, takich jak iPhone, iPad, Apple Watch, AirPods, iMac, Mac Pro, Mac Mini i Mac Studio.

Promocje