La sicurezza e la coerenza sono alcune delle principali preoccupazioni che abbiamo nell'utilizzare librerie, framework e plug-in di terze parti. Affrontiamo lo stesso problema nell'utilizzo di temi e plug-in WordPress gratuiti e commerciali.
Il codice WordPress fornisce una serie di linee guida e regole per lo sviluppo di temi. Per inviare temi alla directory dei temi di WordPress, è necessario rispettare tali linee guida. Ma ci sono centinaia di temi gratuiti e commerciali che potrebbero non essere sviluppati secondo queste linee guida.
Fondamentalmente dobbiamo verificare se un tema corrisponde almeno all'insieme di linee guida e regole date. Theme Check è un plugin gratuito per WordPress sviluppato per convalidare i temi di WordPress.
Sicuramente non può, almeno, con la sua funzionalità predefinita. Quindi qui vedremo come possiamo utilizzare i controlli esistenti e aggiungere le nostre regole per la convalida dei temi di WordPress.
Il tema del controllo viene fornito con circa 40 test integrati per convalidare il tema sia sul front-end che sulla dashboard dell'amministratore. Fondamentalmente tali controlli conterranno le convalide necessarie per evitare problemi di sicurezza e far corrispondere le funzionalità del tema alle linee guida sullo sviluppo del tema.
Come sviluppatori di temi o utenti di temi di terze parti, dovremmo usare questo strumento per assicurarci che i nostri temi siano all'altezza degli standard.
La maggiore importanza del correttore di temi deriva dalla sua capacità di modificare il comportamento esistente o di aggiungere nuovi comportamenti tramite plug-in collegabili. In questo articolo esamineremo la sua architettura e le possibilità di estendere il plug-in per utilizzarlo come libreria di controllo del tema con funzionalità complete.
Presumo che molti di voi abbiano già utilizzato questo plugin nelle attività di sviluppo di WordPress. Chi è nuovo a questo plugin può prendere una copia dal repository dei plugin di WordPress su http://wordpress.org/extend/plugins/theme-check/.
Una volta installato e attivato, verrà visualizzato un sottomenu chiamato Tema di controllo sotto il Aspetto menu. Lì puoi trovare una casella a discesa contenente tutti i temi disponibili sull'installazione di WordPress. È possibile selezionare un tema e fare clic su Controllalo pulsante per iniziare la convalida del tema. Una volta che il processo è completato, si otterrà una schermata come la seguente.
WP_DEBUG
opzione nel wp-config.php file su VERO
prima di iniziare a convalidare i temi. La schermata dei risultati di Temi di verifica conterrà tutti i tipi di errori trovati nel tema in diversi tipi di errore come CONSIGLIATO, NECESSARIO, AVVERTIMENTO, ecc. Ricorda che tutte queste convalide vengono eseguite in base agli standard di revisione del tema WordPress.
La potenza effettiva di Theme Check arriva quando estendiamo il plug-in con controlli di convalida personalizzati. Quindi analizziamo il codice per scoprire come funziona e come possiamo estenderlo con i nostri controlli.
Theme Check offre un'interfaccia ben definita e semplice per la creazione di assegni. Tutti gli assegni esistenti e nuovi controlli devono essere implementati in questa interfaccia per far funzionare le cose. Il seguente codice contenuto nel checkbase.php il file mostra l'interfaccia comune per i controlli dei temi.
// interfaccia che tutti i controlli dovrebbero implementare l'interfaccia themecheck // dovrebbe restituire true per sempre / ok / accettabile, false per cattivo / non-ok / inaccettabile controllo di funzione pubblica ($ php_files, $ css_files, $ other_files); // dovrebbe restituire una serie di stringhe che spieghino gli eventuali problemi riscontrati nella funzione pubblica getError ();
Fondamentalmente contiene due funzioni per controllare il tema e fornire errori. Tutti i contenuti del file del tuo tema saranno compressi in tre variabili principali come stringhe. Queste variabili vengono quindi passate alla funzione di controllo di ogni classe di controllo dal plugin.
Dentro il dai un'occhiata
funzione dobbiamo implementare le convalide e restituire errori se il controllo viene completato come errore. Poi il getError
verrà chiamata la funzione per aggiungere i messaggi di errore nella pagina dei risultati di Tema di verifica.
Penso che sia importante capire il processo di inizializzazione di Theme Check per scoprire come funziona e le sezioni importanti che dobbiamo focalizzare, prima di estendere la funzionalità del plugin.
Una volta selezionato il tema e facendo clic sul pulsante "Controlla", il plug-in cercherà tutti i file nel tema selezionato utilizzando il PHP RecursiveDirectoryIterator
e assegna l'intero contenuto di quei file in una variabile stringa.
Quindi i contenuti del file saranno separati in tre variabili, una per file PHP, file CSS e altri file. Quindi avvia il processo di esecuzione dei controlli a tema, che sarà la parte più importante per noi come sviluppatori.
Considerare il seguente codice per il processo di esecuzione iniziale dopo aver caricato le variabili del file.
// carica tutti i controlli nella directory dei controlli $ dir = 'checks'; foreach (glob (dirname (__ FILE__). "/$dir/*.php") come $ file) include $ file; do_action ('themecheck_checks_loaded'); function run_themechecks ($ php, $ css, $ other) global $ themechecks; $ pass = true; foreach ($ themechecks $ check) if ($ controlla l'istanza di themecheck) $ pass = $ pass e $ check-> check ($ php, $ css, $ altro); restituisce $ pass;
themecheck_checks_loaded
. Questa azione agisce come la parte più importante nel processo di estensione.run_themechecks
funzione, che accetta file PHP, file CSS e altri file come variabili.$ themechecks
variabile che verrà eseguita per completare il processo di verifica.La maggior parte dei controlli dei temi si basa sulla corrispondenza delle espressioni regolari o sulla corrispondenza di posizioni specifiche nelle stringhe. Il nostro primo requisito è capire come possiamo modificare il comportamento dei controlli esistenti. Diamo un'occhiata al IncludeCheck
classe, che convalida come i file dovrebbero essere inclusi in un tema.
class IncludeCheck implementa themecheck protected $ error = array (); controllo della funzione ($ php_files, $ css_files, $ other_files) $ ret = true; $ checks = array ('/ (? __ ('Il tema sembra utilizzare include o require. Se questi vengono utilizzati per includere sezioni separate di un modello da file indipendenti, quindi get_template_part () dovrebbe essere usato invece. ',' themecheck ')); foreach ($ php_files come $ php_key => $ phpfile) foreach ($ assegna come $ key => $ check) checkcount (); if (preg_match ($ key, $ phpfile, $ corrisponde)) $ filename = tc_filename ($ php_key); $ error = '/ (?errore [] = sprintf (__ ('INFORMAZIONI: % 1 $ s % 2 $ s% 3 $ s ',' themecheck '), $ nomefile, $ controllo, $ grep); return $ ret; function getError () return $ this-> error; $ themechecks [] = new IncludeCheck;
CheckCount
variabile.$ themechecks
array alla fine del file.Supponiamo che tu voglia migliorare un controllo del tema esistente aggiungendo nuove regole o modificando le regole esistenti. Tutto ciò che devi fare è aggiungere un nuovo elemento o modificare le espressioni regolari di elementi esistenti nella serie di controlli.
Ora dovresti avere una chiara comprensione di come funzionano i controlli dei temi e come vengono generati gli errori sui guasti. Passiamo alla parte più importante della creazione dei nostri controlli personalizzati senza influire sul plug-in principale.
Costruire nuovi assegni a tema può essere semplice come implementare l'interfaccia con una nuova classe di controllo del tema e inserire i file nella directory dei controlli del plugin. Ma cambiare la funzionalità di base non è un metodo raccomandato in quanto perderai sempre i tuoi file sugli aggiornamenti dei plugin.
È consigliabile estendere i plug-in utilizzando le opzioni possibili senza influire sul codice principale. Gli sviluppatori di Theme Check hanno abilitato l'opzione di estendere la funzionalità usando un hook di azione chiamato themecheck_checks_loaded
.
Questo hook di azione verrà eseguito dopo aver caricato tutti i controlli del tema. Pertanto avremo accesso alla variabile di controllo del tema globale all'interno di plug-in collegabili. Adesso è il momento di iniziare creando un plug-in personalizzato.
A volte potremmo aver bisogno di disabilitare alcuni controlli a tema per soddisfare i requisiti dei nostri temi. Devi rimuovere il file o commentare il codice di inizializzazione per disabilitarli in uno scenario normale. Ma con la potenza di un plug-in collegabile, possiamo abilitarli o disabilitarli in qualsiasi momento senza influire sul core. Vediamo come possiamo disabilitare i controlli del tema usando un plugin.
function custom_themecheck_checks_loaded () global $ themechecks; $ checks_to_disable = array ("Deprecato", "Screenshot_Checks"); foreach ($ themechecks $ keyindex => $ check) if ($ controlla l'istanza di themecheck) $ check_class = get_class ($ check); if (in_array ($ check_class, $ checks_to_disable)) unset ($ themechecks [$ keyindex]); add_action ('themecheck_checks_loaded', 'custom_themecheck_checks_loaded');
Possiamo implementare il themecheck_checks_loaded
azione del plugin Verifica tema, all'interno dei nostri plugin. Lì abbiamo accesso a tutti i controlli a tema caricati. Possiamo definire una matrice per contenere i nomi di classe dei controlli a tema che vogliamo disabilitare. Infine, disinseriamo i controlli contenuti nell'array disabilitato e il controllo del tema verrà eseguito senza queste convalide.
Siamo autorizzati a modificare facilmente i controlli dei temi esistenti utilizzando il nostro plugin. L'implementazione di un controllo del tema da zero è l'intenzione principale di questo tutorial. Quindi vediamo come possiamo creare un nuovo controllo del tema.
Ci possono essere centinaia di scenari per implementare controlli a tema personalizzati. Convalidare i ganci di azione personalizzati è uno dei miei preferiti e userò il codice per le spiegazioni.
Fondamentalmente mi piacerebbe avere alcuni hook di azione personalizzati nei miei temi per aggiungere nuove funzionalità. Il tema Tematico è un buon esempio per l'utilizzo efficace di ganci di azione personalizzati nei temi. Iniziamo con l'implementazione di un controllo personalizzato del tema.
All'interno della cartella del plugin personalizzato, crea una nuova classe PHP e implementa l'interfaccia con i dettagli discussi nelle sezioni precedenti. Il modo più semplice è copiare un controllo tema esistente e modificare la funzione di controllo e l'inizializzazione. Si consideri il seguente codice per l'implementazione del controllo degli hook di azioni personalizzate.
__ ('Vedi: ',' themecheck '),' do_action \ (\ s? ("| \ ') sample_action2 (" | \') \ s? \) '=> __ (' Vedi: ',' themecheck ')); foreach ($ assegna come $ key => $ check) checkcount (); if (! preg_match ('/'. $ key. '/ i', $ php)) if ($ key === 'do_action \ (\ s? ("| \') sample_action1 (" | \ ') \ s? \) ') $ key = __ (' do_action (\ 'sample_action1 \') ',' themechek '); if ($ key === 'do_action \ (\ s? ("| \') sample_action2 (" | \ ') \ s? \)') $ key = __ ('do_action (\' sample_action2 \ ') ',' themechek '); $ key = ltrim (trim (trim ($ key, '('), '\\')); $ this-> error [] = sprintf (__ ('NECESSARIO: Non ho potuto trovare % 1 $ s. % 2 $ s ',' themecheck '), $ key, $ check); $ ret = falso; return $ ret; function getError () return $ this-> error; $ themechecks [] = new CustomActions; ?>
In questo controllo personalizzato, ho incluso espressioni regolari per convalidare due hook di azioni personalizzati chiamati sample_action1
e sample_action2
. Una volta trovata una corrispondenza, definiamo una chiave user-friendly da mostrare all'utente al posto delle espressioni regolari originali. Se lo si confronta con i controlli esistenti, si noterà che le espressioni regolari ei messaggi della funzione di controllo sono le uniche cose che sono state modificate.
Infine possiamo aggiungere nuovi assegni usando un'altra implementazione dell'azione come mostrato nel codice seguente.
function custom_new_themecheck_loadeder () global $ themechecks; include_once 'custom_actions.php'; add_action ('themecheck_checks_loaded', 'custom_new_themecheck_loadeder');
Ora puoi integrare i tuoi controlli a tema nel plug-in Verifica tema.
Tema di controllo è stato sviluppato per convalidare temi contro le linee guida per lo sviluppo del tema WordPress. Quindi si concentrerà principalmente su problemi di sicurezza e mantenendo un formato e caratteristiche coerenti.
Possiamo usare questo plugin da una prospettiva diversa per aggiungere funzionalità come mostrato nell'ultima sezione. Se sei un esperto di espressioni regolari, è possibile creare alcuni controlli avanzati del tema con questo straordinario strumento.
Sta a te decidere quando utilizzare i controlli a tema personalizzati. Naturalmente, questo è più importante per gli sviluppatori di temi piuttosto che per gli utenti di temi WordPress.
Posso pensare a due scenari principali in cui i controlli a tema personalizzati possono diventare utili.
Non penso che nessun sviluppatore svilupperà da zero ogni tema di WordPress. Molto spesso gli sviluppatori mantengono la propria struttura tematica di base e costruiscono vari progetti in aggiunta.
Pertanto, i controlli personalizzati dei temi saranno molto utili per mantenere la coerenza di un framework di base su tutti i temi. Puoi convalidare cose come formati di immagine, dimensioni, codici brevi, azioni ecc. All'interno del tuo framework.
Generalmente la maggior parte dei temi WordPress sono progettati per soddisfare un tipo di tema di blog. WordPress offre hook di azione incorporati per le funzionalità del blog e, quindi, non avremo alcuna difficoltà a estenderli.
Tuttavia, ci possono essere scenari in cui si sviluppano temi per applicazioni come siti di postazione di lavoro, carrelli della spesa, sistemi di gestione degli eventi ecc. Questi temi hanno sezioni e caratteristiche completamente diverse rispetto ai blog. WordPress non offre funzionalità integrate per tali temi. Quindi sarebbe una buona idea implementare i ganci di azione all'interno di tali temi e convalidarli utilizzando la verifica dei temi.
Spero che tu abbia appreso l'importanza del controllo del tema e come possiamo utilizzarlo per mantenere la coerenza tra i nostri temi.
Vorrei sapere se hai utilizzato questo plug-in e quale tipo di controlli tema personalizzati hai implementato per estendere le sue funzionalità.
Sentiti libero di condividere i tuoi suggerimenti e domande nella sezione commenti qui sotto.