Jeden z naszych bardziej technicznych czytelników zapytał nas ostatnio, jak zweryfikować istnienie funkcji PHP przed zintegrowaniem nowego kodu z witryną WordPress. Jest to ważne, aby zapewnić płynne działanie witryny i uniknąć błędów.
Jedną z mocnych stron WordPressa jest jego elastyczność, a zespół WPBeginner regularnie dodaje niestandardowe funkcje, aby poprawić funkcjonalność naszej witryny. Rozumiemy, że niestandardowy kod PHP może zawieść, jeśli wywołuje funkcję, która już nie istnieje lub nie została jeszcze zdefiniowana.
W tym artykule pokażemy, jak łatwo sprawdzić, czy funkcja istnieje przed dodaniem jej do motywu WordPress, co pozwoli uniknąć potencjalnych błędów w kodzie.
Dlaczego warto dodać „If Function Exists” do twojego własnego kodu?
WordPress jest napisany głównie w języku programowania PHP. PHP to język programowania po stronie serwera, który działa na serwerach Twojego dostawcy hostingu WordPress.
Ponieważ kod PHP musi zakończyć działanie przed wczytywaniem strony w przeglądarkach twoich użytkowników, istnieją pewne ograniczenia. Jednym z nich jest to, że jeśli coś pójdzie nie tak, może to uniemożliwić wczytywanie całej strony.
W WordPressie, jeśli brak funkcji uniemożliwia uruchomienie reszty kodu, zatrzymuje się on i wyświetla komunikat o błędzie krytycznym lub błędzie krytycznym.
Co może sprawić, że funkcja nagle przestanie działać lub zniknie?
Jest to bardziej powszechny błąd WordPressa, niż mogłoby się wydawać.
Załóżmy na przykład, że jedna z twoich wtyczek WordPress posiada funkcję, którą dodałeś do nagłówka lub stopki twojego motywu. Wyłączanie wtyczki sprawi, że funkcja zniknie i spowoduje błąd krytyczny na twojej witrynie internetowej WordPress.
Biorąc to pod uwagę, przyjrzyjmy się, jak łatwo sprawdzić, czy funkcja istnieje przed wykonaniem jej w plikach twojego motywu WordPress.
Sprawdzanie istnienia funkcji w WordPress
Na szczęście język programowania PHP posiada wbudowaną metodę łatwego sprawdzania istnienia funkcji przed jej wykonaniem.
Załóżmy, że masz funkcję WordPress, która wyświetla obecny, aktualny czas z informacjami o strefie czasowej. Oto przykładowy fragment kodu, którego możesz użyć, aby to wypróbować.
Możesz dodać go bezpośrednio do pliku functions.php twojego motywu, ale w tym poradniku użyjemy wtyczki fragmentu kodu WPCode, ponieważ jest to najbezpieczniejszy i najłatwiejszy sposób dodawania własnego kodu w WordPress.
Najpierw należy zainstalować i włączyć darmową wtyczkę WPCode. Jeśli potrzebujesz pomocy, zapoznaj się z naszym przewodnikiem dla początkujących krok po kroku, jak zainstalować wtyczkę WordPress.
Po włączaniu, musisz przejść do Code Snippets ” + Add Snippet na twoim kokpicie WordPress. Następnie należy najechać kursorem myszy na opcję „Add Your Custom Code (New Snippet)”, a następnie kliknąć przycisk „Use snippet”, który się pojawi.
Spowoduje to otwarcie nowej strony, na której można utworzyć własny fragment kodu. Wpisz tytuł, na przykład „Display Current Time With Timezone”, a następnie wklej poniższy fragment kodu do panelu podglądu kodu.
//display current time with timezone
function wpb_show_timezone() {
$better_time = current_time('F j, Y g:i a e');
echo "<p>The current time is " . $better_time ."</p>";
}
Następnie należy wybrać „Fragment kodu PHP” z listy rozwijanej Rodzaj kodu, aby upewnić się, że kod działa poprawnie.
Na koniec należy przełączyć przełącznik włączania na pozycję włączoną i kliknąć przycisk „Zapisz fragment kodu”, aby zapisać twój nowy fragment kodu.
Aby wywołać tę funkcję, musisz dodać następujący kod w dowolnym miejscu twojego motywu WordPress, w którym chcesz wyświetlać obecny, aktualny czas.
<?php wpb_show_timezone(); ?>
Tak to wyglądało na naszej testowej witrynie internetowej.
Co by się stało, gdyby kod odpowiedzialny za wykonanie tej funkcji zniknął?
Wywołanie funkcji zepsuje twoją witrynę internetową w ten sposób.
Dodajmy sprawdzenie, aby upewnić się, że ten kod działa tylko wtedy, gdy funkcja istnieje.
Ponownie, będziesz musiał dodać kod bezpośrednio do pliku functions.php twojego motywu lub użyć wtyczki fragmentu kodu, takiej jak WPCode (zalecane):
<?php
if( function_exists('wpb_show_timezone')) {
wpb_show_timezone();
} else {
// do nothing
}
?>
W tym kodzie używamy funkcji function_exists()
. Funkcja ta sprawdza, czy funkcja istnieje i zwraca wartość True lub False.
Następnie dodaliśmy warunek if-else, aby podjąć odpowiednie działanie w zależności od dostępności funkcji.
Teraz, gdy funkcja nie jest już dostępna, kod po prostu ją pominie, a WordPress będzie mógł normalnie wczytywać resztę twojej witryny internetowej.
Mamy nadzieję, że ten artykuł pomógł ci dowiedzieć się, jak sprawdzić, czy funkcja istnieje w WordPress. Możesz również zapoznać się z naszym przewodnikiem na temat łatwego wyświetlania kodu w witrynie WordPress lub naszym wyborem najlepszych edytorów kodu dla komputerów Mac i Windows do edycji plików WordPress.
If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.
Rakib
really helpful
Joana Pereira
Good call Kovshenin. I know exactly what you mean because I was using a custom function with contact form 7 (to retrieve the ip address on each form) and every time the plugin was updated, the theme broke.
Thanks for the tip
Joana Pereira
kovshenin
Right, only please stop checking for dynamic_sidebar with function_exists in WordPress themes, unless you need to support WordPress 2.2 and below, which I *highly* doubt. Also with the user photo plugin, the whole approach seems to be wrong and redundant to me, it looks like many developers are missing the whole point of pluggable functions…. Oh well