Jako weboví designéři jde proti naší přírodě omezit přístup k našemu kódu. Naučili jsme se maximalizovat kompatibilitu našich webových stránek a usilovat o zpětnou kompatibilitu kdekoli je to možné; vytvořit progresivně vylepšené a elegantně ponižující stránky. Pokud dokážeme pracovat na IE1, není to špatná věc ...

Problém, alespoň pro vývojáře WordPress, spočívá v tom, že WordPress je monstrum; bude tohle a váš krásný malý projekt spolknout, pokud to necháte.

Když vytváříte téma WordPress, ať již jako zakázku pro určitého klienta, nebo prodávat na jednom z mnoha trhů WordPress, nemusíte nikdy pokrýt vše, co kdy bylo součástí WordPressu. Místo toho by měl být vaším cílem využít co nejlépe klíčové funkce, funkce a filtry, abyste maximalizovali aktuální kódovou základnu.

Jako profesionál je váš čas peněz, tím delší výdaje, které vyděláváte na váš rozvoj, činí méně zisku; je to jednoduchá rovnice. Velikost WordPress znamená, že můžete snadno trávit 80% svého času na 20% trhu. Daleko lépe strávit 80% času stravování na 80% trhu. Pokud jde o kvalitní produkt a vlastní bankovní zůstatek, je to nejjistější přístup.

v 14 klíčových funkcí aplikace WordPress pro vývoj motivů prošli jsme některými funkcemi, které bezpodmínečně zahrnuji do funkcí mého startéra. V tomto článku pokrýváme další zásadní funkci, která by se měla dostat do vašeho seznamu klíčových funkcí aplikace WordPress. Ušetří vám hlavu a srdce, bolest po silnici.

WordPress již omezuje zpětnou kompatibilitu

Pokud se vyhneme zneužití, které přivádí váš klientský web (který běží na vašem tématu) až k jeho kolenám, kdo si myslíte, že zavolá? Dovolte mi, abych vám zachránil hádanku: jeho vy, m'kay? Nezáleží na tom, že vše, co způsobuje problém, vůbec není vaší chybou, na klienta, záleží jen na tom, že jste nejblíže k možnému problému. Poslední věc, kterou si pamatují, je, že vás najímá, abyste pro ně vytvořili nové téma.

Pokud po kontrole zjistíte, že stránka klienta stále běží na WordPress starší než aktuální stálá verze, trvá několik vteřin a slapuje se po celé tváři: nejprve levá tvář a pak pravá tvář. Vaše téma by jim nemělo dovolit!

Pokud jste věnovali pozornost od verze 3.6 aplikace WordPress, začali jste si všimnout funkce, která je do výchozího motivu funkce functions.php, která omezila použití výchozího motivu na verze WP novější než 3.6. Ve skutečnosti je to druhá funkce definovaná ve funkcích Twenty Fourteen's.php!

Tato funkce vypadá takto:

/*** 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';}

Máme zájem o obsah tohoto souboru back-compat.php . Funkce zde definované jsou to, co používáme pro vlastní témata.

Žádná země pro staré WordPress

Skoro nezáleží na tom, jaké funkce implementujete, ale pokud je to možné, omezíte použití témat na relativně nové verze aplikace WordPress. To zajistí, že koncový uživatel aktualizuje svou instalaci (tím lépe je pro ně z hlediska bezpečnosti) a zajišťuje, že většinu uživatelů věnujete většinu svého vývoje.

Definování funkce

Chcete-li to dosáhnout, použijeme funkci PHP version_compare () a zkontrolujeme aktuálně nainstalovanou verzi aplikace WordPress v porovnání s nejnovější dostupnou verzí, ujistěte se, že nejnovější instalovaná verze není nižší než 3,6 - vytvořte si vlastní výběr v jaké verzi testujete, 3.6 není doporučení, jen příklad. Tato funkce vypadá takto:

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' );}

Co tato funkce dělá, definuje akční funkci butter_never_get_old (), která se spustí pouze tehdy, když je vyvolána funkce core after_switch_theme () . Doposud funkce butter_never_get_old () , která je umístěna uvnitř naší kontroly verzí, provádí následující:

  1. Zkontroluje, jakou verzi aplikace WordPress je aktuálně nainstalována
  2. Ujistěte se, že verze je novější než verze 3.6
  3. Spustí kosmicky relevantní funkci If / Else:
  4. Pokud je: Aktivujte motiv.
  5. Pokud tomu tak není: Téma neaktivujte. Namísto toho znovu / aktivujte výchozí motiv a, abych byl příjemný, vygenerujte příjemnou malou zprávu, která instruuje uživatele, aby upgradoval svou směšně starou instalaci. Pojď, dědečku!

Nudge, šprýchej! Aktualizovat s #% *

Dále musíme definovat funkci butter_step_your_game_up (), která vytiskne naše upozornění administrátora, jestli by se něco nezmohlo, což by znamenalo, že verze WP je starší než bychom chtěli.

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 );}

Výše uvedená funkce butter_step_your_game_up () nastavuje náš překladatelný řetězec chybové zprávy v proměnné $ update_message tak, jak je definováno (toto téma vyžaduje ... atd.), Které pak bude vytištěno a zobrazeno uživateli (z dříve definované funkce butter_never_get_old () ) a vizuálně uvnitř div s třídou "chyby". Tato zpráva můžete následně upravit podle potřeby.

Takže, podle všeho, by naše funkce měla vypadat takto:

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 );} }}

S tím, že jste na místě, jste se ujistit, že váš motiv nemůže být aktivován v instalacích WordPress starších než verze 3.6.

Udržuj to čisté

Pokud je to možné, měli byste mít své funkce.php čisté. Mělo by být čisté v tom smyslu, že byste měli být schopni rychle skenovat a okamžitě zjistit, co každá funkce dělá. Za tímto účelem bychom mohli chtít přesunout naši funkci do složky zahrnující.

Pokud jste tak ještě neučinili, vytvořte složku a pojmenujte ji "inc" uvnitř adresáře tématu. Uvnitř vytvoříte soubor php a pojmenujte back-compat.php . Zkopírujte a vložte obsah funkce, kterou jsme právě vytvořili, a necháme pouze verzi_compare () ve funkcích functions.php:

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

V souboru /inc/back-compat.php vložte funkce, které jsme definovali dříve:

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 );}

Závěr

Je to vždycky tvrdý prodej, který říká dobrému vývojáři, že musí omezit kompatibilitu svého kódu. Ale pouhá velikost WordPress codebase, obzvláště když se soustředíte na zpětnou kompatibilitu, omezuje rozsah vašeho tématu praktickou nutností. WordPress sám o sobě by měl zvýraznit jeho platnost.

A nyní, osvobozený od neustálých překážek představených zastaralým kódem, můžete soustředit své energie tam, kde patří: na využívání skvělé síly WordPressu.

Doporučený snímek / náhled obraz kompatibility přes Shutterstock.