Slik tilpasser du temakontroll for å validere WordPress-temaer

Sikkerhet og konsistens er noen av de store bekymringene vi har i å bruke tredjeparts biblioteker, rammer og plugins. Vi står overfor det samme problemet ved å bruke gratis og kommersielle WordPress-temaer og plugins.

WordPress Codex gir et sett med retningslinjer og regler for utvikling av temaer. For å sende temaer til WordPress-temakatalogen må du følge disse retningslinjene. Men det er hundrevis av gratis og kommersielle temaer som kanskje ikke utvikles i henhold til disse retningslinjene.

I utgangspunktet må vi sjekke om et tema samsvarer med minst det angitte sett med retningslinjer og regler. Theme Check er et gratis WordPress-plugin utviklet for å validere WordPress-temaer.


Kan temakontroll bekrefte alt?

Det kan absolutt ikke, i det minste, med standardfunksjonaliteten. Så her skal vi se hvordan vi kan bruke eksisterende sjekker, samt legge til egne regler for validering av WordPress-temaer.


Betydningen av Tema Kontroll Plugin

Theme Check kommer opp med rundt 40 innebygde tester for å validere temaet ditt på både front-end og admin dashboard. I utgangspunktet vil disse kontrollene inneholde nødvendige valideringer for å unngå sikkerhetsproblemer og tilhørende temafunksjoner mot temautviklingsretningslinjer.

Som temautviklere eller brukere av temaer fra tredjeparter, bør vi bruke et slikt verktøy for å sikre at våre temaer er opp til standarder.

Hovedkontrollen av temakontrolleren kommer med sin evne til å endre eksisterende oppførsel eller legge til ny oppførsel gjennom pluggerbare plugins. Gjennom hele denne artikkelen vil vi se på arkitekturen og mulighetene for å utvide pluginet for å bruke det som et fullt utstyrt temakontrollbibliotek.


Slik bruker du temakontroll

Jeg antar at de fleste av dere allerede har brukt dette pluginet i WordPress-utviklingsoppgaver. De som er nye til dette pluginet kan ta en kopi fra WordPress plugin-depotet på http://wordpress.org/extend/plugins/theme-check/.

Når du er installert og aktivert, får du en undermeny som heter Temakontroll under Utseende Meny. Der finner du en dropdown-boks som inneholder alle tilgjengelige temaer på WordPress-installasjonen. Du kan velge et tema og klikke på Sjekk det knappen for å starte tema validering. Når prosessen er fullført, vil du få en skjerm som følgende.


Pass på at du aktiverer WP_DEBUG alternativ i wp-config.php fil til EKTE før du begynner å validere temaer.

Skjermbildet Tema-sjekker vil inneholde alle typer feil som finnes i temaet ditt i forskjellige feiltyper, for eksempel ANBEFALT, NØDVENDIG, ADVARSEL, etc. Husk at alle disse valideringene er utført på grunnlag av WordPress tema gjennomgang standarder.

Den faktiske kraften til Theme Check kommer når vi utvider pluginet med tilpassede valideringskontroller. Så la oss grave inn i koden for å finne ut hvordan det fungerer og hvordan vi kan forlenge det med våre egne sjekker.


Forstå temakontrollgrensesnitt

Theme Check tilbyr et godt definert og enkelt grensesnitt for å skape sjekker. Alle eksisterende sjekker samt nye kontroller må implementeres i dette grensesnittet for å få ting til å fungere. Følgende kode finnes i checkbase.php fil viser det felles grensesnittet for tema sjekker.

 // grensesnitt som alle sjekker skal implementere grensesnittet temacheck // skal returnere sant for godt / ok / akseptabelt, falsk for dårlig / ikke-okay / uakseptabel offentlig funksjonskontroll ($ php_files, $ css_files, $ other_files); // skal returnere en rekke strenger som forklarer eventuelle problemer funnet offentlig funksjon getError (); 

I utgangspunktet inneholder den to funksjoner for å sjekke temaet og gi feil. Alt filinnholdet i temaet ditt blir komprimert i tre hovedvariabler som strenge. Disse variablene sendes deretter inn i kontrollfunksjonen til hver sjekkklasse ved hjelp av plugin.

Inne i kryss av funksjon vi må implementere valideringene, og returnere feil hvis sjekken fullføres som en feil. Og så getError funksjonen vil bli kalt for å legge til feilmeldingene i Tema-sjekksresultatsiden.


Introduksjon til temakontrollprosess

Jeg synes det er viktig å forstå initieringsprosessen med Theme Check for å finne ut hvordan det fungerer og de viktige delene vi må fokusere, før du utvider plugin-funksjonaliteten.

Når vi velger temaet og klikker på "Sjekk det" -knappen, vil plugin søke etter alle filene i det valgte temaet ved hjelp av PHP RecursiveDirectoryIterator og tilordner hele innholdet av disse filene til en strengvariabel.

Da blir filinnholdet delt inn i tre variabler, en hver for PHP-filer, CSS-filer og andre filer. Da starter det prosessen med å kjøre temakontroller, som vil være den viktigste delen for oss som utviklere.

Vurder følgende kode for den første utførelsesprosessen etter å ha lastet filvariablene.

 // laste alle kontrollene i sjekklisten $ dir = 'sjekker'; foreach (glob (dirname (__ FILE__). "/$dir/*.php") som $ fil) include $ file;  do_action ('themecheck_checks_loaded'); funksjon run_themechecks ($ php, $ css, $ andre) global $ themechecks; $ pass = true; $ pass = $ pass & $ check-> sjekke ($ php, $ css, $ andre);  returnere $ pass; 

Kodeforklaring

  • Alle temakontrollene lagres i sjekker katalog av plugin og hver av dem er inkludert ved å søke etter PHP-filene i katalogen.
  • Når alle temakontrollene er lastet, utfører plugin en tilpasset handling kalt themecheck_checks_loaded. Denne handlingen virker som den viktigste delen i utvidelsesprosessen.
  • Så begynner systemet å utføre temakontroller gjennom run_themechecks funksjon, som tar PHP-filer, CSS-filer og andre filer som variabler.
  • Endelig er kontrollfunksjonen til hver av temacheckene lastet inn i det globale $ themechecks variabel som vil bli utført for å fullføre kontrollprosessen.

Tilpasse eksisterende temakontroller

De fleste av temakontrollene er basert på samsvarer med vanlige uttrykk eller samsvarer med bestemte posisjoner i strenger. Vårt første krav er å finne ut hvordan vi kan endre oppførselen til eksisterende sjekker. Så la oss ta en titt på IncludeCheck klassen, som bekrefter hvordan filer skal inkluderes i et tema.

 klasse IncludeCheck implementerer temacheck protected $ error = array (); funksjonskontroll ($ php_files, $ css_files, $ other_files) $ ret = true; $ sjekker = array ('/ (? __ ('Temaet ser ut til å bruke inkludere eller kreve. Hvis disse blir brukt til å inkludere separate deler av en mal fra uavhengige filer, så get_template_part () skal brukes i stedet. ',' temacheck ')); foreach ($ php_files as $ php_key => $ phpfile) foreach ($ sjekker som $ key => $ sjekk) checkcount (); hvis (preg_match ($ key, $ phpfile, $ matches)) $ filnavn = tc_filnavn ($ php_key); $ error = '/ (?feil [] = sprintf (__ ('INFO: % 1 $ s % 2 $ s% 3 $ s ',' temacheck '), $ filnavn, $ sjekk, $ grep);  returnere $ ret;  funksjon getError () return $ this-> error;  $ themechecks [] = ny IncludeCheck;

Kodeforklaring

  • Alle tema sjekker har et beskyttet utvalg for lagring av feil.
  • I innsjekkingsfunksjonen kan vi inkludere et hvilket som helst antall sjekker i en matrise. Her har vi bare en sjekk.
  • De fleste av temakontrollene vil bli utført ved å samsvare med regulære uttrykk, og derfor vil nøklene for utvalg av sjekker være vanlige uttrykk. Verdien av den respektive nøkkelen skal inneholde feilmeldingen som skal vises i tilfelle feil.
  • Da må vi velge en bestemt type fil og krysse gjennom hver sjekk i array mens du oppdaterer den globale checkcount variabel.
  • Deretter gjennomfører vi det vanlige uttrykksmatchet og tildeler feilene til globale feilarrangementet på feil.
  • Etterpå returnerer vi statusen for sjekken som en suksess eller en feil. Avhengig av statusen, vil plugin ta de nødvendige feilene som vises på resultatsiden.
  • Endelig initierer vi objektet til temakontrollklassen og tildeler det til det globale $ themechecks array på slutten av filen.

Anta at du vil forbedre en eksisterende temakontroll ved å legge til nye regler eller endre eksisterende regler. Alt du trenger å gjøre er å legge til et nytt element, eller endre de vanlige uttrykkene for eksisterende elementer i kontrollruten.

Nå bør du ha en klar forståelse av hvordan tema sjekker jobber og hvordan feilene genereres på feil. La oss flytte inn på den viktigste delen av å lage våre egne tilpassede sjekker uten å utføre kjernepluggen.


Utvidelse av temakontroll med pluggerbar plugin

Å bygge nye tema sjekker kan være like enkelt som å implementere grensesnittet med et nytt tema sjekk klasse og sette filene i sjekken katalogen av plugin. Men å endre kjernefunksjonaliteten er ikke en anbefalt metode, da du alltid vil miste filene dine på plugin-oppdateringer.

Best praksis er å utvide plugins ved hjelp av mulige alternativer uten å påvirke kjernekoden. Utviklere av temakontroll har aktivert muligheten til å utvide funksjonaliteten ved hjelp av en handlingskrok som heter themecheck_checks_loaded.

Denne handlingen krok vil bli utført etter at alle tema sjekker er lastet. Derfor vil vi ha tilgang til den globale temakontrollvariabelen i pluggbare plugins. Nå er det på tide å komme i gang ved å lage en tilpasset plugin.


Fjerner eksisterende kontroller

Noen ganger kan det hende at vi må deaktivere noen temakontroller for å matche kravene til våre egne temaer. Du må enten fjerne filen eller kommentere initialiseringskoden for å deaktivere dem i et normalt scenario. Men med kraften i et pluggerbar plugin kan vi aktivere eller deaktivere dem når som helst uten å påvirke kjernen. La oss se hvordan vi kan deaktivere temakontroller ved hjelp av et plugin.

 funksjon custom_themecheck_checks_loaded () global $ themechecks; $ checks_to_disable = array ("Utdatert", "Screenshot_Checks"); foreach ($ themechecks som $ keyindex => $ sjekk) if ($ sjekk forekomst av temacheck) $ check_class = get_class ($ sjekk); hvis (in_array ($ check_class, $ checks_to_disable)) unset ($ themechecks [$ keyindex]);  add_action ('themecheck_checks_loaded', 'custom_themecheck_checks_loaded');

Vi kan implementere themecheck_checks_loaded handling av Tema Sjekk plugin, inne i våre egne plugins. Der har vi tilgang til alle de belastede temakontrollene. Vi kan definere en matrise for å inneholde klassenavnene til temakontrollene vi vil deaktivere. Endelig slår vi av kontrollene som finnes i deaktiverte matrisen, og temakontrollen blir utført uten disse valideringene.

Vi har lov til å enkelt endre de eksisterende temakontrollene ved hjelp av vårt eget plugin. Implementering av en temakontroll fra grunnen er den viktigste hensikten med denne opplæringen. Så la oss se hvordan vi kan lage en ny temakontroll.


Opprette nye temakontroller

Det kan være hundrevis av scenarier for gjennomføring av tilpassede tema sjekker. Validering av tilpassede handlingskroker er en av mine favoritt, og jeg skal bruke koden for forklaringer.

I utgangspunktet vil jeg gjerne ha bestemte tilpassede handlingskroker i temaene mine for å legge til ny funksjonalitet. Tematisk tema er et godt eksempel på effektiv bruk av tilpassede handlingskroker i temaer. La oss begynne å implementere en tilpasset temakontroll.

Inne i den tilpassede plugin-mappen, opprett en ny PHP-klasse og implementer grensesnittet med detaljene som er omtalt i de forrige avsnittene. Den enkleste måten er å kopiere en eksisterende temakontroll og endre kontrollfunksjonen og initialiseringen. Vurder følgende kode for implementering av kontroll av tilpassede handlingskroker.

  __ ('Se: '' 'tjekke'), 'do_action \ (\ s? ("| \') sample_action2 (" | \ ') \ s? \)' => __ ('Se: ',' temacheck ')); foreach ($ sjekker som $ key => $ sjekk) checkcount (); Hvis (! preg_match ('/'. $ key. '/ i', $ php)) hvis ($ key === 'do_action \ (\ s? ("| \') sample_action1 (" | \ ') \ s? \) ') $ key = __ (' do_action (\ 'sample_action1 \') ',' themechek ');  $ key === 'do_action \ (\ s? ("| \') sample_action2 (" | \ ') \ s? \)') $ key = __ ('do_action (\' sample_action2 \ ') ',' themechek ');  $ key = ltrim (trim (trim ($ key, '('), '\\')); $ this-> error [] = sprintf (__ ('NØDVENDIG: Kunne ikke finne % 1 $ s. % 2 $ s ',' temacheck '), $ nøkkel, $ sjekk); $ ret = false;  returner $ ret;  funksjon getError () return $ this-> error;  $ themechecks [] = nye CustomActions; ?>

I denne egendefinerte sjekken har jeg tatt med vanlige uttrykk for å validere to tilpassede handlingskroker som heter sample_action1 og sample_action2. Etter at en kamp er funnet, definerer vi en brukervennlig nøkkel som skal vises til brukeren i stedet for de originale vanlige uttrykkene. Hvis du sammenligner det med eksisterende sjekker, vil du legge merke til at vanlige uttrykk og meldinger i sjekkfunksjonen er de eneste tingene som er endret.

Til slutt kan vi legge til nye sjekker ved hjelp av en annen implementering av handlingen som vist i følgende kode.

 funksjon custom_new_themecheck_loadeder () global $ themechecks; include_once 'custom_actions.php';  add_action ('themecheck_checks_loaded', 'custom_new_themecheck_loadeder');

Nå kan du integrere dine egne tema sjekker inn i Theme Check-plugin.


Når skal du bruke temakontroll

Temakontroll er utviklet for å validere temaer mot WordPress-temautviklingsretningslinjene. Derfor vil det fokusere hovedsakelig på sikkerhetsproblemer og holde konsistent format og funksjoner.

Vi kan bruke dette pluginet fra et annet perspektiv for å legge til funksjoner som vist i den siste delen. Hvis du er ekspert i regulære uttrykk, er det mulig å lage noen avansert temakontroll med dette fantastiske verktøyet.

Det er opp til deg å bestemme når du skal bruke tilpassede tema sjekker. Selvfølgelig er dette viktigere for temautviklere enn brukere av WordPress-temaer.

Jeg kan tenke på to hovedscenarier hvor tilpassede tema sjekker kan bli nyttige.

Opprettholde en grunnleggende ramme

Jeg tror ikke noen utvikler vil utvikle hvert WordPress-tema fra grunnen av. Oftest utviklerne holder sitt eget grunnleggende tema rammeverk og bygger ulike design på toppen av det.

Så tilpassede tema sjekker vil være ganske nyttig for å holde konsistensen av et grunnleggende rammeverk på tvers av alle temaer. Du kan validere ting som bildeformater, størrelser, kortkoder, handlinger etc. i ditt eget rammeverk.

Utvikle temaer utover blogger

Vanligvis er de fleste WordPress-temaer designet for å passe til en bloggingstype. WordPress tilbyr innebygde handlingskroker for bloggfunksjoner, og derfor vil vi ikke ha noen problemer med å utvide dem.

Det kan imidlertid være scenarier hvor du utvikler temaer for applikasjoner som jobbpoststeder, handlekurver, arrangementshåndteringssystemer etc. Disse temaene har helt forskjellige deler og funksjoner i forhold til blogger. WordPress tilbyr ikke innebygde funksjoner for slike temaer. Derfor vil det være en god ide å implementere handlingshager innenfor slike temaer og validere dem ved hjelp av temakontroll.


Konklusjon

Jeg håper du lærte viktigheten av temakontroll og hvordan vi kan bruke den til å holde konsistens på tvers av våre temaer.

Jeg vil gjerne vite om du har brukt dette pluginet og hva slags tilpasset tema sjekker du har implementert for å utvide funksjonene.

Du er velkommen til å dele dine forslag og spørsmål i kommentarfeltet nedenfor.