15 przydatnych funkcji WordPressa Wszyscy programiści powinni wiedzieć
WordPress jest pełen wspaniałych funkcji, z których mogą korzystać nasi programiści. Możemy wyciągać listy postów z powietrza, manipulować niemal wszystkim w nich, chwycić każdego użytkownika, którego chcemy i wyświetlać swoje połączenia społecznościowe w mgnieniu oka.
Istnieje jednak kilka funkcji, które wydają się być pomijane z nieznanych powodów. Kodowałem z WordPress od około 8 lat i od czasu do czasu wciąż znajduję coś nowego! Spójrzmy na niektóre z moich ulubione przeoczone funkcje i naucz się ich używać po drodze.
antyspambot ()
Zwykle podnoszę kilka brwi z tym jednym, wydaje się, że jest to jedna z najlepiej ukrytych funkcji w bazie kodu.
zastępuje znaki encjami HTML, które są jednym ze sposobów maskować adresy e-mail od złych zgarniaczy.antyspambot ()
$ email = '[email protected]'; echo „Możesz się ze mną skontaktować pod”. antyspambot ($ email). „w każdej chwili”.
Chociaż jest to przydatny plik, jest to również przykład, dlaczego niektórzy ludzie krytykują WordPressa - jest to strasznie nazwana funkcja. Czytając nazwę funkcji, nie masz pojęcia, co ona robi.
human_time_diff ()
Kiedy po raz pierwszy dowiedziałem się o tej funkcji około rok temu, pomyślałem, że to był niedawny dodatek, który przeoczyłem w dzienniku zmian. Nie do końca…
Ta funkcja - która generuje różnicę między dwoma znacznikami czasu - została wprowadzona od wersji 1.5 (czyli 17 lutego 2018 r.!).
Poniższy wspaniały fragment, który zapożyczyłem z kodeksu, pokazuje, jak dawno opublikowano aktualny post. Używa opublikować datę posta jako pierwszy argument i aktualna data jako druga.
echo „Ten post został opublikowany”. human_time_diff (get_the_time ('U'), current_time ('timestamp')). „temu”;
get_post_meta ()
Miejcie ze mną tutaj, wiem, że jest to dobrze używana funkcja, ale jak to działa nie jest tak powszechna wiedza. Przede wszystkim pomijając drugi i trzeci parametr, który możesz ściągnij wszystkie metadane dla posta.
$ all_meta = get_post_meta (14);
Nawet jeśli pobierzesz dane tylko dla jednego klucza, wszystkie postmeta i tak zostaną pobrane.
Powód jest całkiem logiczny. Metadane są używane w wielu miejscach. Jeśli
zapytuje bazę danych za każdym razem, gdy była używana, kończymy na zbyt wielu zapytaniach. Zamiast tego, jeśli pobierzesz metadane, buforuje je wszystkie i używa buforowanych wartości we wszystkich kolejnych pobieraniach metadanych.get_post_meta ()
wp_upload_bits ()
Ta funkcja jest prosta funkcja przesyłania plików. Chociaż nie przenosi pliku do folderu przesyłania i nie dodaje go do sekcji mediów WordPress, jest niezwykle wygodny i zawsze możesz zrobić resztę za pomocą
funkcjonować.wp_insert_attachment ()
$ upload = wp_upload_bits ($ file ['name'], null, file_get_contents ($ file ['tmp_name']));
Oto kilka wyjaśnień: pierwszym parametrem jest nazwa pliku. Druga jest amortyzowana, więc powinna być ustawiona na null (eyeroll na konsolę WordPress). Trzeci parametr to rzeczywista zawartość pliku.
get_post_field ()
W przeszłości widziałem kilka przykładów, w których ktoś napisał pętlę, aby uzyskać liczbę komentarzy do posta lub napisał dedykowane zapytanie do bazy danych. Nie potrzebujesz ich, czego potrzebujesz
. Ta funkcja pobiera wartość pojedynczego pola dla pojedynczego wpisu w bazie danych. Weźmy pod uwagę liczbę komentarzy!get_post_field ()
Ten post ma komentarze.
wpautop ()
Ta funkcja wyszła nieco na światło dzienne, ale nadal jest stosunkowo nieznana. Jest podobny do natywnego PHP nl2br
ale zamiast tworzyć nowe linie, to opakowuje treść w akapity.
Jest to przydatne, jeśli masz pole tekstowe i chcesz mieć pewność, że gdy użytkownicy będą tworzyć akapity z podwójnymi podziałami linii, pozostaną również widoczni na froncie.
Co mówią nasi użytkownicy
wp_is_mobile ()
Ta trafnie nazwana funkcja wykrywa, kiedy użytkownik jest na urządzeniu mobilnym i pozwala odpowiednio wyświetlać zawartość. Ponieważ jest to zmienna warunkowa, zwraca wartość true lub false w zależności od scenariusza.
Odwiedź naszą stronę internetową na swoim komputerze, aby uzyskać bogatsze wrażenia
wp_redirect ()
Ostatni przykład pokazuje inną zgrabną funkcję:
. Powinien być użyty w miejsce natywnego PHP wp_redirect ()
nagłówek()
funkcjonować. Funkcja przekierowania WordPress pozwala ustaw adres URL do przekierowania, a także ustaw kod statusu, świetny również do obsługi stałych przekierowań.
// Dla adresu URL, który nie jest już używany wp_redirect ('http://website.com/new-url/', 301);
paginate_links ()
Założę się, że ta funkcja częściowo zawdzięcza popularność wtyczki WP-PageNavi. Domyślnie WordPress wyświetla poprzednie / następne linki na końcu listy postów. WP-PageNavi zastępuje je numerami stron.
Można to zrobić przy odrobinie pracy przy użyciu
Funkcje. Ma kilka parametrów, więc polecam zajrzeć do dokumentacji.paginate_links ()
Poniższy przykład z kodeksu pokazuje, w jaki sposób można dodać go do pętli domyślnej, ale dodanie go do pętli niestandardowych nie jest zbyt dużym stresem.
global $ wp_query; $ duży = 999999999; // potrzebujesz nieprawdopodobnej liczby całkowitej echo paginate_links (array ('base' => str_replace ($ big, '% #%', esc_url (get_pagenum_link ($ big))), 'format' => '? paged =% #%' , 'current' => max (1, get_query_var ('paged')), 'total' => $ wp_query-> max_num_pages));
wp_die ()
Ta funkcja uzupełnia PHP umierać()
funkcjonować. Różnica polega na tym, że ta funkcja wyświetli HTML w stylu WordPress zamiast zwykłego tekstu. Możesz użyć tej funkcji, aby zatrzymać wykonywanie PHP. Możesz dodać wiadomość, tytuł i dodatkowe argumenty do wyświetlenia, na przykład:
wp_die („Ups, nie masz dostępu do„, ”Odmowa uprawnień”);
has_block ()
W wersji 5.0 WordPress wprowadził edytor blokowy o nazwie kodowej Gutenberg. Ta funkcja określi, czy treść zawiera Gutenberga, podobnie jak has_shortcode ()
funkcjonować. Wróci prawdziwe
jeśli treść zawiera blok lub fałszywy
Jeśli to nie.
wp_set_script_translations ()
Ponieważ wiele elementów interfejsu użytkownika WordPress ma przejść na JavaScript, potrzebuje wygodnego sposobu rejestrowania tłumaczonych tekstów w JavaScript, które WordPress mógłby analizować i rozumieć. Użyj tej funkcji, aby ustawić przetłumaczone łańcuchy dla swoich skryptów. Poniżej znajduje się przykład:
wp_enqueue_script ('my-script', plugins_url ('js / my-script.js', __FILE__)); wp_set_script_translations ('my-script', 'mu-text-domain');
register_block_type ()
Kolejna ważna funkcja w WordPress 5.0. Ta funkcja pozwala zarejestrować nowy blok w nowym edytorze WordPress. Twój blok pojawi się w nowym edytorze i wstaw go .
register_block_type ('my-plugin / new-block', array ('title' => 'New Block', 'icon' => 'megafon', 'category' => 'widgets', 'render_callback' => 'render_function_callback') ,));
rest_do_request ()
Ta funkcja umożliwia nawiązanie połączenia z punktami końcowymi API REST WordPress przez PHP. Całkiem przydatne, gdy musisz pobrać dane wyjściowe z interfejsu API REST do przetwarzania, które będziesz przetwarzać dalej po stronie PHP zamiast po stronie przeglądarki (front-end).
$ request = nowy WP_REST_Request („GET”, „/ wp / v2 / posts”); $ request-> set_header ('X-WP-Nonce', wp_create_nonce ('wp_rest')); $ response = rest_do_request ($ request); $ data = 200 === $ response-> get_status ()? $ response-> get_data (): [];
rest_preload_api_request ()
Podczas budowania interfejsu użytkownika o dużym ciężarze JavaScript w WordPress zazwyczaj potrzebny jest zestaw wstępnych danych proloadowanych na stronie. Jest to funkcja, która pozwoli Ci to zrobić. Ta funkcja ma być używana w połączeniu z array_reduce
, na przykład.
// Wczytaj typowe dane. $ preload_paths = array ('/', '/ wp / v2 / types? context = edit', '/ wp / v2 / taxonomies? per_page = -1 & context = edit', '/ wp / v2 / themes? status = active' ,); preload_data = array_reduce ($ preload_paths, 'rest_preload_api_request', array ()); wp_add_inline_script ('wp-api-fetch', sprintf ('wp.apiFetch.use (wp.apiFetch.createPreloadingMiddleware (% s));', wp_json_encode ($ preload_data)), 'after');
Wniosek
To tylko niektóre funkcje, które wydają się mniej znane niż reszta. Co dwa miesiące odkrywam nową świetną funkcję i jestem pewien, że moi przyjaciele programistów mogą nas jeszcze bardziej zaskoczyć.
Jeśli masz ulubioną, niejasną funkcję lub funkcję, która byłaby przydatna, ale nie jest dostępna, daj nam znać w komentarzach!