Jedną z funkcji, których używam w mojej wtyczce, jest zanieczyszczenie zasięgu globalnego nazwą, która może kolidować z inną funkcją (używaną w innej wtyczce). Więc chyba powinienem to zrobić. Ale jak mam to zrobić?
function foo() {
echo 'bar';
}
Jestem tego świadomy, _deprecate_function()
ale byłbym wdzięczny za przykład pokazujący wszystkie kroki, które powinienem podjąć, aby usunąć funkcję z rdzenia mojej wtyczki.
Patrz: https://developer.wordpress.org/reference/functions/_deprecated_function/
php
functions
deprecation
henrywright
źródło
źródło
Odpowiedzi:
Oprócz odpowiedzi @Welcher:
Istnieje kilka dobrych „ cmentarnych ” przykładów w rdzeniu, w których „ funkcje umierają ”.
Możesz wykorzystać je jako wytyczne, np. Dotyczące dokumentacji.
Oto jeden taki przykład dla
permalink_link()
podwp-includes/deprecated.php
Oto wbudowana dokumentacja
_deprecated_function
funkcji wyjaśniająca argumenty wejściowe:źródło
_deprecated_function()
3) dodaj wywołanie do mojej nowej funkcji, która zastępuje starąUsunięcie wycofania nie zawsze jest równoznaczne z usunięciem, zwykle oznacza to, że element jest oznaczony do WYDARZENIA z API. Czy jest to metoda, która zostanie wywołana zewnętrznie - tak jak w przypadku innych wtyczek lub programistów? Jeśli ta metoda jest używana tylko przez wtyczkę wewnętrznie, prawdopodobnie możesz bezpiecznie usunąć zastąpić ją lepszą funkcją nazwy.
Jeśli nie, utworzę funkcję o lepszej nazwie, a źle nazwane wywołanie wywoła
__doing_it_wrong
ją - przeczytaj o tym w kodeksie. Daje to innym programistom czas na aktualizację odniesień do metody i możesz bezpiecznie usunąć metodę w późniejsza wersja.Mam nadzieję że to pomoże!
źródło
Tworzysz nową wtyczkę i doradzasz użytkownikom migrację do niej, ponieważ bieżąca to EOL.
Nie ma nic bardziej irytującego niż autorzy wtyczek i motywów zmieniający swoje publiczne interfejsy API i starający się traktować to jako „kolejną małą aktualizację”. Nie ma powodu, aby niszczyć witryny z powodu problemu, na który faktycznie nie mają wpływu użytkownicy.
źródło
Sugerowałbym coś takiego:
Powoduje to wyświetlenie w dziennikach ostrzeżenia o wycofaniu oraz śledzenia stosu. Oczywiście będzie to działać tylko wtedy, gdy w WordPress jest włączone rejestrowanie.
Operator trójskładnikowy istnieje, ponieważ stała E_USER_DEPRECATED została wprowadzona tylko w PHP 5.3.0. W starszych wersjach możemy zamiast tego wrócić do prostego ostrzeżenia użytkownika.
Z podręcznika PHP o stałych błędów :
Powodem, dla którego nie lubię używać _doing_it_wrong lub __deprecated_function jest to, że te funkcje są przeznaczone tylko dla rdzenia WordPress. Z odwołania do kodu na temat tych funkcji:
źródło