Så här anpassar du temakontroll för att validera WordPress-teman

Säkerhet och konsistens är några av de största bekymmerna vi har för att använda tredje parts bibliotek, ramverk och plugins. Vi står inför samma problem med att använda gratis och kommersiella WordPress-teman och plugins.

WordPress Codex innehåller en uppsättning riktlinjer och regler för att utveckla teman. För att skicka in teman till WordPress-temakatalogen måste du följa dessa riktlinjer. Men det finns hundratals gratis och kommersiella teman som kanske inte utvecklas enligt dessa riktlinjer.

I grund och botten måste vi kontrollera om ett tema matchar åtminstone den givna uppsättningen riktlinjer och regler. Theme Check är ett gratis WordPress plugin utvecklat för att validera WordPress-teman.


Kan temakontroll bekräfta allt?

Det kan definitivt inte, åtminstone, med standardfunktionen. Så här ska vi se hur vi kan använda de befintliga kontrollerna samt lägga till våra egna regler för validering av WordPress-teman.


Betydelsen av Tema Check Plugin

Tema Check kommer upp med cirka 40 inbyggda tester för att validera ditt tema på både front-end och admin dashboard. I grund och botten kommer dessa kontroller att innehålla nödvändiga valideringar för att undvika säkerhetsproblem och matchande temafunktioner mot riktlinjer för temautveckling.

Som tematillverkare eller användare av tredje parts teman borde vi använda ett sådant verktyg för att se till att våra teman är upp till standard.

Huvudbetydelsen av temakontrollen kommer med sin förmåga att ändra befintligt beteende eller lägga till nytt beteende genom pluggbara plugins. Under hela denna artikel kommer vi att titta på dess arkitektur och möjligheterna att utvidga pluginet för att använda det som ett heltäckande temakontrollbibliotek.


Så här använder du temakontroll

Jag antar att de flesta av er redan har använt det här pluginet i dina WordPress-utvecklingsuppgifter. De som är nya på det här plugin kan fånga en kopia från WordPress-pluginförvaret på http://wordpress.org/extend/plugins/theme-check/.

När du har installerat och aktiverat får du en undermeny som heter Temakontroll under Utseende meny. Där kan du hitta en rullgardinsruta som innehåller alla tillgängliga teman i din WordPress-installation. Du kan välja ett tema och klicka på Kolla upp det knappen för att starta tematvalideringen. När processen är klar kommer du att få en skärm som följande.


Se till att aktivera WP_DEBUG alternativet i wp-config.php fil till SANN innan du börjar validera teman.

Tema Kontrollresultatskärmen innehåller alla typer av fel som finns i ditt tema i olika feltyper, t.ex. REKOMMENDERAD, NÖDVÄNDIG, VARNING, etc. Tänk på att alla dessa valideringar görs på grundval av WordPress-temanedelsstandarderna.

Den faktiska effekten av temakontroll kommer när vi utökar plugin med anpassade valideringskontroller. Så låt oss gräva in i koden för att ta reda på hur det fungerar och hur vi kan förlänga det med våra egna kontroller.


Förstå temakontrollgränssnittet

Theme Check erbjuder ett väldefinierat och enkelt gränssnitt för att skapa kontroller. Alla befintliga kontroller samt nya kontroller måste genomföras i detta gränssnitt för att få saker att fungera. Följande kod finns i checkbase.php filen visar det gemensamma gränssnittet för temakontroller.

 // / gränssnittet att alla kontroller ska genomföra gränssnittet temakontroll // ska returnera sant för bra / okej / acceptabelt, felaktigt för dålig / okej / oacceptabel offentlig funktionskontroll ($ php_files, $ css_files, $ other_files); // ska returnera en rad strängar som förklarar eventuella problem funna offentliga funktion getError (); 

I grund och botten innehåller den två funktioner för att kontrollera temat och ge fel. Allt innehåll i ditt tema kommer att komprimeras i tre huvudvariabler som strängar. Dessa variabler överförs sedan till kontrollfunktionen för varje kontrollklass av plugin.

Inuti kontrollera funktion måste vi genomföra valideringarna och returnera fel om kontrollen slutförs som ett fel. Sedan getError funktionen kommer att ringas för att lägga till felmeddelandena i resultatkalkylresultatet.


Introduktion till temakontrollprocess

Jag tycker att det är viktigt att förstå initieringsprocessen för temakontroll för att ta reda på hur det fungerar och de viktiga avsnitt som vi behöver fokusera, innan du utvidgar pluginfunktionen.

När vi väl väljer temat och klickar på knappen "Check it", kommer plugin att söka efter alla filer i det valda temat med hjälp av PHP RecursiveDirectoryIterator och tilldelar hela innehållet av dessa filer till en strängvariabel.

Därefter separeras filinnehållet i tre variabler, en för PHP-filer, CSS-filer och andra filer. Sedan börjar processen med att köra temakontroller, vilket kommer att bli den viktigaste delen för oss som utvecklare.

Tänk på följande kod för den ursprungliga körprocessen efter att ha laddat filvariablerna.

 // ladda alla kontroller i kontrollkatalogen $ dir = 'checks'; foreach (glob (dirname (__ FILE__). "/$dir/*.php") som $ fil) include $ file;  do_action ('themecheck_checks_loaded'); funktion run_themechecks ($ php, $ css, $ other) global $ themechecks; $ pass = true; $ pass = $ pass & $ check-> check ($ php, $ css, $ other);  returnera $ pass 

Kodförklaring

  • Alla temakontroller lagras i checkar katalog för plugin och varje av dem ingår med att söka efter PHP-filerna i katalogen.
  • När alla temakontrollerna är laddade, exekverar plugin en anpassad åtgärd som heter themecheck_checks_loaded. Denna åtgärd fungerar som den viktigaste delen i den utvidgningsprocessen.
  • Sedan börjar systemet genomföra temakontroller genom run_themechecks funktion, som tar PHP-filer, CSS-filer och andra filer som variabler.
  • Slutligen laddas kontrollfunktionen för var och en av temakontrollerna in i den globala $ themechecks variabel som kommer att utföras för att slutföra kontrollprocessen.

Anpassa befintliga temakontroller

De flesta temakontrollerna baseras på att matcha reguljära uttryck eller matcha specifika positioner i strängar. Vårt första krav är att ta reda på hur vi kan ändra beteendet hos befintliga kontroller. Så låt oss ta en titt på IncludeCheck klass, vilket validerar hur filer ska inkluderas i ett tema.

 klass IncludeCheck implementerar temakontroll protected $ error = array (); funktionskontroll ($ php_files, $ css_files, $ other_files) $ ret = true; $ checks = array ('/ (? __ ('Temat som verkar använda inkluderar eller kräver. Om dessa används för att inkludera separata delar av en mall från oberoende filer, då get_template_part () ska användas istället. ',' themecheck ')); foreach ($ php_files as $ php_key => $ phpfile) foreach ($ checkar som $ key => $ check) checkcount (); om (preg_match ($ key, $ phpfile, $ matchningar)) $ filnamn = tc_filnamn ($ php_key); $ error = '/ (?fel [] = sprintf (__ ('INFO: % 1 $ s % 2 $ s% 3 $ s ',' temacheck '), $ filnamn, $ check, $ grep);  returnera $ ret;  funktion getError () returnera $ this-> error;  $ temakontroller [] = nya IncludeCheck;

Kodförklaring

  • Alla temakontroller har ett skyddat array för att lagra fel.
  • Inom kontrollfunktionen kan vi inkludera valfritt antal kontroller i en array. Här har vi bara en kontroll.
  • De flesta av temakontrollerna kommer att utföras genom att matcha reguljära uttryck och följaktligen kommer nycklarna för kontrollrutan att vara reguljära uttryck. Värdet på respektive nyckel ska innehålla det felmeddelande som ska visas vid fel.
  • Då måste vi välja en viss typ av fil och kryssa igenom varje kontroll i matrisen under uppdatering av den globala checkcount variabel.
  • Därefter utför vi det reguljära uttrycksfönstret och tilldelar felen till den globala feluppsättningen vid fel.
  • Därefter returnerar vi kontrollens status som en framgång eller ett misslyckande. Beroende på statusen kommer pluggen ta de nödvändiga fel som ska visas på resultatsidan.
  • Slutligen initierar vi objektet för temakontrollklassen och tilldelar det till det globala $ themechecks array i slutet av filen.

Antag att du vill förbättra en befintlig temakontroll genom att lägga till nya regler eller ändra befintliga regler. Allt du behöver göra är att lägga till ett nytt objekt eller ändra de vanliga exemplen på befintliga objekt i kontrollrutan.

Nu borde du ha en klar förståelse för hur temakontroller fungerar och hur felen genereras vid misslyckanden. Låt oss gå vidare till den viktigaste delen av att skapa egna skräddarsydda kontroller utan att göra kärnproppen.


Utvidga temakontroll med plug-in plug-in

Att bygga nya temakontroller kan vara lika enkelt som att implementera gränssnittet med en ny temakontrollklass och lägga in filerna i kontrollkatalogen i pluginprogrammet. Men byte av kärnfunktionalitet är inte en rekommenderad metod eftersom du alltid kommer att förlora dina filer på plugin-uppdateringar.

Bästa praxis är att förlänga plugins med hjälp av möjliga alternativ utan att påverka kärnkoden. Utvecklare av temakontroll har aktiverat möjligheten att utvidga funktionaliteten med hjälp av en anropskorg som heter themecheck_checks_loaded.

Denna åtgärdskrok kommer att utföras efter att alla temakontroller är laddade. Därför kommer vi att ha tillgång till den globala temakontrollvariabeln inom pluggbara plugins. Nu är det dags att komma igång genom att skapa en anpassad plugin.


Ta bort befintliga kontroller

Ibland kan vi behöva inaktivera vissa temakontroller för att matcha kraven i våra egna teman. Du måste antingen ta bort filen eller kommentera initieringskoden för att inaktivera dem i ett normalt scenario. Men med kraften i ett plug-in plugin kan vi aktivera eller inaktivera dem när som helst utan att påverka kärnan. Låt oss se hur vi kan inaktivera temakontroller med hjälp av ett plugin.

 funktion custom_themecheck_checks_loaded () global $ themechecks; $ checks_to_disable = array ("Deprecated", "Screenshot_Checks"); foreach ($ themechecks som $ keyindex => $ check) om ($ check instanceof themecheck) $ check_class = get_class ($ check); om (in_array ($ check_class, $ checks_to_disable)) unset ($ themechecks [$ keyindex]);  add_action ('themecheck_checks_loaded', 'custom_themecheck_checks_loaded');

Vi kan genomföra themecheck_checks_loaded åtgärd av plugin för temakontroll, inuti våra egna plugins. Där har vi tillgång till alla laddade temakontroller. Vi kan definiera en array för att innehålla klassnamnen på temakontroller som vi vill inaktivera. Slutligen avstängde vi kontrollerna i deaktiverade matrisen och temakontrollen kommer att utföras utan dessa valideringar.

Vi får enkelt ändra de befintliga temakontrollerna med vårt eget plugin. Att genomföra en temakontroll från början är den viktigaste syftet med denna handledning. Så låt oss se hur vi kan skapa en ny temakontroll.


Skapa nya temakontroller

Det kan finnas hundratals scenarier för att genomföra anpassade temakontroller. Validerande anpassade handtagshakar är en av mina favoriter och jag använder koden för förklaringar.

I grund och botten skulle jag vilja ha vissa anpassade hakar i mina teman för att lägga till ny funktionalitet. Tematematiken är ett bra exempel på effektiv användning av anpassade actionhakar i teman. Låt oss börja om att genomföra en anpassad temakontroll.

Inne i den anpassade plugin-mappen skapar du en ny PHP-klass och implementerar gränssnittet med de detaljer som diskuterats i de föregående avsnitten. Det enklaste sättet är att kopiera en befintlig temakontroll och ändra kontrollfunktionen och initialiseringen. Tänk på följande kod för genomförandet av kontroll av anpassade åtgärdshooks.

  __ ('Se: ',' themecheck '),' do_action \ (\ s? ("| \ ') sample_action2 (" | \') \ s? \) '=> __ (' Se: "," temakontroll ")); foreach ($ checkar som $ key => $ check) checkcount (); om ! preg_match ('/'. $ key. '/ i', $ php)) om ($ 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ÖDVÄNDIG: Kunde inte hitta % 1 $ s. % 2 $ s ',' themecheck '), $ key, $ check); $ ret = false;  returnera $ ret;  funktion getError () returnera $ this-> error;  $ temakontroller [] = nya CustomActions; ?>

I den här anpassade kontrollen har jag inkluderat vanliga uttryck för att validera två kallade anpassade åtgärder sample_action1 och sample_action2. När en match har hittats definierar vi en användarvänlig nyckel som ska visas för användaren istället för de ursprungliga reguljära uttrycken. Om du jämför det med befintliga kontroller märker du att reguljära uttryck och meddelanden i checkfunktionen är de enda saker som har ändrats.

Slutligen kan vi lägga till nya kontroller med hjälp av ett annat genomförande av åtgärden som visas i följande kod.

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

Nu kan du integrera dina egna temakontroller i plugin för temakontroll.


När ska man använda temakontroll

Temakontroll är utvecklad för att validera teman mot WordPress-utvecklingsriktlinjerna. Därför kommer den främst att fokusera på säkerhetshänsyn och hålla konsekvent format och funktioner.

Vi kan använda det här pluginet från ett annat perspektiv för att lägga till funktioner som visas i det sista avsnittet. Om du är expert på reguljära uttryck, är det möjligt att skapa lite avancerad temakontroll med detta fantastiska verktyg.

Det är upp till dig att bestämma när du ska använda anpassade temakontroller. Det här är naturligtvis viktigare för temutvecklare än användare av WordPress-teman.

Jag kan tänka på två stora scenarier där anpassade temakontroller kan bli användbara.

Underhålla en grundläggande ram

Jag tror inte att någon utvecklare kommer att utveckla varje WordPress-tema från början. Oftast håller utvecklarna sina egna grundläggande temaramar och bygger olika mönster utöver det.

Så anpassade temakontroller blir ganska användbara för att hålla konsekvensen av en grundläggande ram över alla teman. Du kan validera saker som bildformat, storlekar, kortkoder, åtgärder etc. inom din egen ram.

Utveckla teman utöver bloggar

Vanligtvis är de flesta WordPress-teman utformade för att passa en bloggtypstyp. WordPress erbjuder inbyggda åtgärdshooks för bloggfunktioner och därmed kommer vi inte ha några problem att utvidga dem.

Det kan emellertid finnas scenarier där du utvecklar teman för applikationer som jobbplaceringar, kundvagnar, evenemangshanteringssystem etc. De här teman har helt olika sektioner och funktioner jämfört med bloggar. WordPress erbjuder inte inbyggda funktioner för sådana teman. Därför skulle det vara en bra idé att genomföra åtgärdshooks inom sådana teman och validera dem med hjälp av temakontroll.


Slutsats

Jag hoppas att du lärde dig vikten av temakontroll och hur vi kan använda den för att hålla konsistens över våra teman.

Jag skulle vilja veta om du har använt det här pluginet och vilken typ av anpassade temakontroller du har genomfört för att utöka funktionerna.

Gärna dela dina förslag och frågor i kommentarfältet nedan.