Jako projektanci stron internetowych jest to sprzeczne z naszą naturą, aby ograniczyć dostęp do naszego kodu. Nauczono nas maksymalizowania kompatybilności naszych stron internetowych i dążenia do kompatybilności wstecznej tam, gdzie to możliwe; tworzyć stopniowo ulepszane i wdzięcznie degradujące strony. Jeśli możemy sprawić, żeby działało na IE1, to nie jest złe ...

Problem, przynajmniej dla programistów WordPress, polega na tym, że WordPress jest potworem; połknie cię i twój piękny mały projekt, jeśli na to pozwolisz.

Kiedy tworzysz motyw WordPress, albo jako zamówienie dla konkretnego klienta, albo odsprzedaż na jednym z wielu platform targowych WordPress, twój cel nigdy nie będzie obejmował wszystkiego, co kiedykolwiek było częścią WordPress. Zamiast tego twoim celem powinno być wykorzystanie kluczowych funkcji, funkcji i filtrów w najlepszy możliwy sposób, aby zmaksymalizować obecną bazę kodów.

Jako profesjonalista, twój czas to pieniądz, im dłużej poświęcasz na rozwój, tym mniej zarabiasz; to proste równanie. Rozmiar WordPress oznacza, że ​​możesz łatwo spędzić 80% czasu na wyżywieniu do 20% rynku. Znacznie lepiej spędzić 80% czasu na wyżywieniu na 80% rynku. Pod względem jakości produktu i własnego salda bankowego, jest to najpewniejsze podejście.

W 14 kluczowych funkcji WordPress, które przyspieszają tworzenie kompozycji przejrzeliśmy niektóre funkcje, które bez problemu zawieram w funkcjach start.php. W tym artykule omówimy inną kluczową funkcję, która powinna znaleźć się na liście kluczowych funkcji WordPress. Zaoszczędzi ci zarówno głowę, jak i serce, bóle w dole drogi.

WordPress ogranicza już kompatybilność wsteczną

Kiedy możliwy do uniknięcia exploit przenosi witrynę klienta (działającą na twój motyw) do kolan, kto Twoim zdaniem zadzwoni? Pozwól, że zaoszczędzę ci zgadywania: to ty, m'kaj? Nie ma znaczenia, że ​​to, co powoduje problem, wcale nie jest twoją winą, dla klienta, ważne jest tylko to, że jesteś najbliżej możliwym problemem. Ostatnią rzeczą, którą pamiętają, jest zatrudnianie cię do budowania dla nich nowego tematu.

Jeśli po sprawdzeniu okaże się, że strona klienta nadal działa na WordPress starszej wersji niż obecna wersja stabilna, weź kilka sekund i uderz się w twarz: najpierw lewy policzek, potem prawy policzek. Twój motyw nie powinien im na to pozwalać!

Jeśli zwróciłeś uwagę, począwszy od wersji 3.6 WordPressa, zauważysz bardzo wysoką funkcję w funkcji domyślnej theme.php, która ogranicza użycie domyślnego motywu do wersji WP nowszej niż 3.6. W rzeczywistości jest to druga funkcja zdefiniowana w funkcjach Twenty Fourteen.php!

Ta funkcja wygląda mniej więcej tak:

/*** Twenty Fourteen only works in WordPress 3.6 or later.*/if ( version_compare( $GLOBALS['wp_version'], '3.6', '<' ) ) {require get_template_directory() . '/inc/back-compat.php';}

Interesuje nas zawartość tego pliku back-compat.php . Zdefiniowane tam funkcje są tym, do czego dążymy, wykorzystując nasze własne motywy.

Brak kraju dla starego WordPressa

Niemal nie ma znaczenia, jakie funkcje wprowadzasz, ale jeśli to możliwe, ogranicz wykorzystanie swoich motywów do całkiem nowych wersji WordPress. To sprawi, że użytkownik końcowy zaktualizuje swoją instalację (tym lepiej pod względem bezpieczeństwa) i zapewni, że większość czasu spędzasz na większości użytkowników.

Definiowanie funkcji

Aby to osiągnąć, używamy funkcji PHP version_compare () w celu sprawdzenia aktualnie zainstalowanej wersji WordPressa w stosunku do najnowszej dostępnej wersji, upewniając się, że najnowsza zainstalowana wersja nie jest niższa niż 3.6 - dokonaj własnego wyboru, dla której wersji chcesz przetestować, 3.6 nie jest zaleceniem, tylko przykładem. Ta funkcja wygląda mniej więcej tak:

if ( version_compare( $GLOBALS['wp_version'], '3.6', '<' ) ) {// do (or do not) somethingfunction butter_never_get_old() {switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME );unset( $_GET['activated'] );add_action( 'admin_notices', 'butter_step_your_game_up' ); // we add some admin notices here (we haven't defined this function yet)}add_action( 'after_switch_theme', 'butter_never_get_old' );}

Funkcja ta definiuje funkcję działania butter_never_get_old () , która działa tylko wtedy, gdy wywoływana jest funkcja rdzenia after_switch_theme () . Jak dotąd, funkcja butter_never_get_old () , która znajduje się wewnątrz naszej kontroli wersji, wykonuje następujące czynności:

  1. Sprawdza, jaka wersja WordPressa jest aktualnie zainstalowana
  2. Upewnia się, że wersja jest nowsza od wersji 3.6
  3. Uruchamia istotę kosmiczną If / Else:
  4. Jeśli jest: Aktywuj motyw.
  5. Jeśli nie jest: nie aktywuj motywu. Zamiast tego ponownie włącz / wyłącz domyślny motyw i, dla przyjemności, wypisz miły mały komunikat, który instruuje użytkownika, aby uaktualnił swoją absurdalnie starą instalację. Dalej, dziadku!

Posuń się, szturchnij! Uaktualnij to s #% *

Następnie musimy zdefiniować funkcję butter_step_your_game_up (), która wypisuje nasze powiadomienia administratora, jeśli coś powinno pójść nie tak, co mogłoby świadczyć o tym, że wersja WP jest starsza, niż byśmy chcieli.

function butter_step_your_game_up() {$update_message = sprintf( __( 'This theme requires WordPress version 3.6 or newer. You're currently using version %s. Please upgrade.', 'butter' ), $GLOBALS['wp_version'] );printf( '

%s

', $update_message );}

Powyższa funkcja butter_step_your_game_up () ustawia nasz podlegający translacji ciąg znaków błędu w zmiennej $ update_message zgodnie z definicją (ten motyw wymaga ... itd.), Który jest następnie drukowany i wyświetlany użytkownikowi (z wcześniej zdefiniowanej funkcji butter_never_get_old () ) i wizualnie, wewnątrz div z klasą "błędu". Ta wiadomość, możesz następnie nadać styl zgodnie z potrzebami.

Tak więc, wszystko powiedziane, nasza funkcja powinna wyglądać tak:

if ( version_compare( $GLOBALS['wp_version'], '3.6', '<' ) ) {// This function deactivates our newly activated theme if WP isn't newer than 3.6// It then re/activates the default themefunction butter_never_get_old() {switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME );unset( $_GET['activated'] );add_action( 'admin_notices', 'butter_step_your_game_up' );}add_action( 'after_switch_theme', 'butter_never_get_old' );// This function, called from within the above function// outputs the relevant message that nudges the theme's user// to upgradefunction butter_step_your_game_up() {$update_message = sprintf( __( 'This theme requires WordPress version 3.6 or newer. You are currently using version %s. Please upgrade!', 'butter' ), $GLOBALS['wp_version'] );printf( '

%s

', $update_message );} }

Dzięki temu upewnisz się, że Twój motyw nie może zostać aktywowany w instalacjach WordPress starszych niż wersja 3.6.

Utrzymywać w czystości

O ile to możliwe, powinieneś utrzymywać swój function.php w czystości. Powinien być czysty w tym sensie, że powinieneś być w stanie szybko skanować i natychmiast rozpoznać, co robi każda funkcja. W tym celu możemy chcieć przenieść naszą funkcję do folderu zawiera.

Jeśli jeszcze tego nie zrobiłeś, utwórz folder i nazwij go "inc" wewnątrz katalogu motywu. W tym celu utwórz plik php i nadaj mu nazwę back-compat.php . Skopiuj i wklej zawartość nowo utworzonej funkcji, pozostawiając tylko wersję_compare () w functions.php:

if ( version_compare( $GLOBALS['wp_version'], '3.6', '<' ) ) {require get_template_directory() . '/inc/back-compat.php';}

Wewnątrz pliku /inc/back-compat.php wklej funkcje, które zdefiniowaliśmy wcześniej:

function butter_never_get_old() {switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME );unset( $_GET['activated'] );add_action( 'admin_notices', 'butter_step_your_game_up' );}add_action( 'after_switch_theme', 'butter_never_get_old' );function butter_step_your_game_up() {$update_message = sprintf( __( 'This theme requires WordPress version 3.6 or newer. You are currently using version %s. Please upgrade!', 'butter' ), $GLOBALS['wp_version'] );printf( '

%s

', $update_message );}

Wniosek

Zawsze trudno jest powiedzieć dobrego programistom, że muszą ograniczyć zgodność swojego kodu. Ale ogromny rozmiar bazy kodu WordPress, zwłaszcza gdy koncentrujesz się na kompatybilności wstecznej, sprawia, że ​​ograniczenie zakresu twojego motywu staje się praktyczną koniecznością. Sam WordPress powinien to podkreślić.

A teraz, uwolnieni od ciągłych przeszkód przedstawionych przez nieaktualny kod, możesz skupić swoje energie tam, gdzie ich miejsce: na wykorzystaniu niesamowitej mocy WordPressa.

Wyróżniony obraz / miniatura, używa obraz zgodności przez Shutterstock.