Come web designer, è contrario alla nostra natura limitare l'accesso al nostro codice. Ci viene insegnato a massimizzare la compatibilità dei nostri siti Web e adoperarci per ottenere la retrocompatibilità laddove possibile; per creare siti progressivamente migliorati e degradando con grazia. Se riusciamo a farlo funzionare su IE1, non è una brutta cosa ...

Il problema, almeno per gli sviluppatori di WordPress, è che WordPress è un mostro; ingoia te e il tuo bel piccolo progetto intero se lo lasci fare.

Quando stai producendo un tema WordPress, sia come lavoro su misura per un cliente specifico, o per rivendere su uno dei tanti mercati di WordPress, il tuo obiettivo non può mai essere quello di coprire tutto ciò che è mai stato parte di WordPress. Invece, il tuo obiettivo dovrebbe essere quello di utilizzare le funzioni, le caratteristiche e i filtri chiave nel modo migliore possibile per massimizzare la base di codice corrente.

Come professionista, il tuo tempo è denaro, più tempo investi nel tuo sviluppo e meno profitti ottieni; è una semplice equazione. La dimensione di WordPress significa che puoi passare facilmente l'80% del tuo tempo a soddisfare il 20% del mercato. Molto meglio spendere l'80% delle volte a coprire l'80% del mercato. In termini di prodotto di qualità e il proprio saldo bancario, è l'approccio più sicuro.

In 14 funzioni WordPress per avviare lo sviluppo del tema abbiamo esaminato alcune delle funzioni che, senza esito negativo, includo le funzioni.php del mio tema introduttivo. In questo articolo, copriamo un'altra funzione cruciale che dovrebbe andare sul tuo elenco di funzioni chiave di WordPress. Ti farà risparmiare sia la testa che il cuore, dolori giù per la strada.

WordPress limita già la compatibilità con le versioni precedenti

Quando un exploit evitabile porta in ginocchio il sito del tuo cliente (che scorre sul tuo tema), chi pensi che chiameranno? Lascia che ti risparmi le supposizioni: sei tu, m'kay? Non importa che qualunque sia la causa del problema non è affatto colpa tua, per il cliente, importa solo che tu sei il link più vicino al possibile problema. L'ultima cosa che ricordano di fare è assumerti per costruire un nuovo tema per loro.

Se dopo l'ispezione si scopre che il sito del cliente gira ancora su WordPress più vecchio rispetto alla versione stabile corrente, prendi qualche secondo e schiaffeggia sul viso: prima la guancia sinistra, poi la guancia destra. Il tuo tema non dovrebbe permettere loro di farlo!

Se hai prestato attenzione, a proposito della versione 3.6 di WordPress, avrai iniziato a notare una funzione piuttosto in alto nelle funzioni.php del tema predefinito che limitava l'uso del tema predefinito alle versioni di WP più recente di 3.6. In effetti è la seconda funzione definita in functions.php di Twenty Fourteen!

Quella funzione assomiglia a questo:

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

Siamo interessati ai contenuti di quel file back-compat.php . Le funzioni definite sono ciò che cerchiamo di utilizzare con i nostri temi.

Nessun paese per vecchio WordPress

Non importa quali siano le caratteristiche che stai implementando, ma se possibile, limita l'uso dei tuoi temi a versioni ragionevolmente nuove di WordPress. Ciò assicurerà che l'utente finale aggiorni la propria installazione (per loro è meglio in termini di sicurezza) e garantisce che la maggior parte degli utenti passi la maggior parte del tempo di sviluppo.

Definire la funzione

Per raggiungere questo obiettivo, utilizziamo la funzione version_compare () di PHP per verificare la versione correntemente installata di WordPress rispetto all'ultima versione disponibile, assicurandoti che la versione installata più recente non sia inferiore a 3.6-fai la tua selezione su quale versione testare, 3.6 non è una raccomandazione, solo un esempio. Quella funzione assomiglia a questo:

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

Ciò che questa funzione fa è definire una funzione di azione butter_never_get_old () che verrà eseguita solo quando viene chiamata la funzione core after_switch_theme () . Finora, la funzione butter_never_get_old () , che si trova all'interno del nostro controllo di versione, effettua le seguenti operazioni:

  1. Controlla quale versione di WordPress è attualmente installata
  2. Si assicura che la versione sia più recente della versione 3.6
  3. Esegue l'If / Else di rilevanza cosmica:
  4. Se lo è: attiva il tema.
  5. Se non lo è: non attivare il tema. Invece re / attivare il tema predefinito e, per essere bello, emettere un piccolo messaggio che istruisce l'utente ad aggiornare la loro installazione ridicolmente vecchia. Andiamo, nonno!

Spingi, spara! Esegui l'upgrade di s #% *

Successivamente, dobbiamo definire la funzione butter_step_your_game_up () che stampa le nostre notifiche di amministrazione se qualcosa dovesse andare storto, il che significherebbe apparentemente che la versione WP è più vecchia di quanto vorremmo.

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

La funzione butter_step_your_game_up () sopra imposta la nostra stringa di messaggio di errore traducibile nella variabile $ update_message come definito (questo tema richiede ... ecc.) Che viene quindi stampato e visualizzato all'utente (dalla funzione butter_never_get_old () precedentemente definita) e visivamente, all'interno un div con classe di 'errore'. Questo messaggio, puoi quindi modellare come vuoi.

Quindi, tutto sommato, la nostra funzione dovrebbe assomigliare a questa:

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

Con ciò, assicurati che il tuo tema non possa essere attivato su installazioni di WordPress precedenti alla versione 3.6.

Mantieni pulito

Per quanto possibile, dovresti mantenere pulite le tue funzioni . Dovrebbe essere pulito nel senso che dovresti essere in grado di scansionare rapidamente e discernere immediatamente ciò che ogni funzione sta facendo. A tal fine, potremmo voler spostare la nostra funzione in una cartella include.

Se non lo hai già fatto, crea una cartella e chiamala "inc" nella directory del tema. Al suo interno, crea un file php e chiama back-compat.php . Copia e incolla il contenuto della funzione appena creata lasciando solo version_compare () in functions.php:

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

All'interno del file /inc/back-compat.php , incolla le funzioni che abbiamo definito in precedenza:

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

Conclusione

È sempre una vendita difficile dire a un buon sviluppatore che devono limitare la compatibilità del loro codice. Ma la dimensione pura della base di codice WordPress, specialmente quando ci si concentra sulla retrocompatibilità, rende la necessità di limitare la portata del tema. Lo stesso WordPress dovrebbe evidenziare la sua validità.

E ora, liberati dagli ostacoli costanti presentati da un codice scaduto, puoi concentrare le tue energie a cui appartengono: sfruttando l'incredibile potenza di WordPress.

Immagine in primo piano / miniatura, usi immagine di compatibilità via Shutterstock.