Hoe Themakaders echt werken

Themakaders kunnen extreem krachtig zijn. Voor niet-technische WordPress-gebruikers maken ze het mogelijk om een ​​unieke site te maken die eruit ziet alsof het een op maat gemaakt thema is, en voor WordPress-ontwikkelaars kunnen ze je helpen het DRY-principe (Do not Repeat Yourself) toe te passen en je de mogelijkheid bieden om bouw aangepaste sites snel.

Als je al een tijdje een raamwerk van een derde partij gebruikt en gefrustreerd bent geraakt door de opgeblazen code of gebrek aan flexibiliteit, of je wilt gewoon volledige controle over je code hebben, dan is het bouwen van je eigen themakader de beste aanpak.

In deze serie leert u hoe u uw eigen WordPress-themaraamwerk kunt maken waarmee u sites voor uzelf of uw klanten kunt bouwen of zelfs kunt vrijgeven voor andere gebruikers. Je gaat door de stappen die nodig zijn om het ouderthema te maken dat de basis vormt van je raamwerk, extra functies toevoegt, haken en meer. Je leert ook hoe je deze kunt gebruiken in je kindthema's en plug-ins en hoe je je code openbaar kunt maken.

Maar voordat u begint, moet u weten hoe themakaders werken en wat hen anders maakt, vormen een standaard ouderthema.

Ik heb tijd besteed aan het ontwikkelen van twee themakaders voor gebruik op twee categorieën van klantensites, deze in de loop van de tijd te ontwikkelen en te verbeteren, en ik heb ook met een aantal van de themakaders van derden gewerkt. In mijn ervaring heeft een themakader enkele hoofdkenmerken:

  • Het bestaat uit een bovenliggend thema dat is ontworpen om te worden gebruikt met kindthema's. In sommige gevallen kan het bovenliggende thema ook werken als een op zichzelf staand thema, maar in andere werkt het bovenliggende thema alleen samen met kindthema's - de WordPress Codex definieert deze als 'Base / Starter Themes' en 'Code Libraries,' respectievelijk.
  • Het bevat haken en functies die kunnen worden gebruikt door kindthema's en plug-ins. Je themaraamwerk is de basis van een heel ecosysteem waarmee je zult werken, en dat omvat de plug-ins die in je framework zullen aansluiten.
  • Indien ontworpen voor toegang door niet-coderende gebruikers, zal het thema-optiespagina's bevatten die gebruikers in staat stellen om het thema aan te passen aan hun behoeften. Deze kunnen uitgebreid zijn, inclusief ontwerp, lay-out, functies, inhoud en meer. In sommige gevallen kan functionaliteit worden geboden via de Theme Customizer.
  • Het kan meerdere widgetgebieden bevatten, zodat niet-technische gebruikers inhoud of code kunnen toevoegen via widgets (inclusief widgets toegevoegd door plug-ins die u specifiek voor het framework schrijft).
  • Het kan ook scriptbibliotheekfunctionaliteit bevatten, zoals een jQuery-schuifregelaar of lightbox. Afhankelijk van uw behoeften en die van uw gebruikers, kunt u deze opnemen in het kader of plug-ins leveren met de code die aansluit op uw raamwerk.
  • Het is uitbreidbaar, met haken waardoor je de functionaliteit kunt uitbreiden via kindthema's of plug-ins.

De eerste twee van de bovenstaande punten zijn het meest fundamenteel - zonder een bovenliggend thema heb je geen themakader. En een ouderthema zonder die haken en functies is slechts een elementair ouderthema, niet echt een raamwerk.

Dus dat zijn de themakaders, maar hoe werken ze? Laten we de elementen van een themakader bekijken:

  • Het bovenliggende thema en optionele kindthema's
  • Actie- en filterhaken
  • functies
  • Thema opties
  • widgets
  • scripts
  • uitbreidbaarheid

De ouder- en kindenthema's

Het hoofdonderdeel van een themakader is het hoofdthema. Dit kan op twee manieren worden ontworpen:

  • Als een startthema, dat op zichzelf kan werken, misschien met aanpassing via een thema-optiescherm of de thema-aanpasser. Voorbeelden hiervan zijn Atahualpa en Thematic. Beide kunnen als afzonderlijke thema's worden gebruikt zonder gebruik te maken van kindenthema's.
  • Als een basis waaraan een kindthema moet worden toegevoegd, zonder welke het thema een site niet effectief van stroom zal voorzien. Voorbeelden zijn Hybrid Core en Genesis. Deze bevatten de basiscode die u normaal in een thema vindt, samen met een reeks hooks en functies die kunnen worden gebruikt door kindthema's en ook door plug-ins. Dit alles bevat een API voor het framework.

Omdat een van de belangrijkste kenmerken van themakaders het DRY-principe is, maakt uw moederthema waarschijnlijk gebruik van sjabloononderdelen en neemt het waar mogelijk bestanden op, wat betekent dat u dezelfde code op meerdere locaties in uw thema kunt gebruiken. Dit maakt het ook eenvoudiger om code te overschrijven in uw kindthema's, omdat u eenvoudig een vervangend sjabloononderdeel of een bestand maakt.

Ik ga het concept van ouder- en kindthema's hier niet uitleggen, zoals in deze tutorial over kindthema's wordt behandeld. Veel themakaders komen met een reeks kindthema's om ze te ondersteunen, terwijl je met anderen je eigen thema's moet ontwikkelen. 

Als u uw eigen kind ontwikkelt, raad ik u aan ten minste één 'starterskind'-thema te maken om te voorkomen dat u de werkzaamheden voor het opzetten van een project herhaalt: u kunt besluiten om meerdere kindthema's te maken als basis voor verschillende soorten projecten , bijvoorbeeld kindthema's voor blogs en voor niet-blogsites.

Actie- en filterhaken

Een themakader bevat een reeks hooks voor kindthema's en plug-ins om in te haken bij het toevoegen van aangepaste code of het veranderen van de manier waarop het thema zich gedraagt:

  • Actietehaken verschijnen op meerdere plaatsen in de code, waardoor je code kunt toevoegen aan je sjabloonbestanden via functies die zijn gecodeerd in het kader en die kunnen worden opgeheven door kindthema's, of via functies die je aan je kindthema's of plug-ins toevoegt. Mijn eigen themaraamwerk maakt uitgebreid gebruik van actiehaken en voorziet ze in alle sjabloonbestanden om gebruikers te laten vallen in inhoud zoals widgetgebieden, contactgegevens, call-to-action knoppen en sitespecifieke code, waar deze ook nodig is.
  • Filterhaken kunnen worden gebruikt om te veranderen hoe een site met een kindthema of een bepaalde plug-in zich gedraagt, bijvoorbeeld lussen aanpassen, statische inhoud aanpassen en meer. Elke statische tekst (of code die van buiten uw site wordt opgeroepen) moet in een filter worden ingepakt, zodat deze indien nodig kan worden gewijzigd door onderliggende thema's..

Het is de moeite waard enige tijd te nemen om te overwegen welke hooks u in een vroeg stadium wilt opnemen, zodat u weet welke inhoud via een haak moet worden opgenomen en wat u rechtstreeks in uw sjabloonbestanden moet coderen. Je zult dit in het volgende deel van deze serie bekijken.

functies

Uw framework bevat waarschijnlijk ook een reeks functies. Sommige hiervan zullen aansluiten op de actie en filterhaken die u al hebt gedefinieerd, terwijl andere functies zijn zoals sjabloontoetsen die onderliggende thema's kunnen gebruiken. 

Als u aangepaste functies hebt die u op een aantal client-sites gebruikt, is het de moeite waard ze aan uw framework toe te voegen. U hoeft niet al uw functies te activeren: u kunt een functie uit het bovenliggende thema activeren met een add_action () functie op de site van uw kind.

thema opties

Thema-optieschermen zijn een nuttige aanvulling op elk complex thema, maar zijn vooral handig voor themakaders die zijn ontworpen voor niet-technische gebruikers. De hoofdthema-kaders bevatten allemaal meerdere schermen met thema-opties in hun eigen beheerdersgedeelte, met opties zoals het in- en uitschakelen van functies, het aanpassen van de lay-out, het toevoegen van inhoud en het wijzigen van ontwerpelementen zoals kleuren, achtergrondafbeeldingen, lettertypen en headerafbeeldingen..

U kunt ervoor kiezen om de thema-aanpasser voor veel van uw opties te gebruiken, wat het voordeel heeft dat uw gebruikers hun wijzigingen kunnen zien terwijl ze ze maken. Ik heb deze benadering gekozen voor het Edupress-themakader, dat ik met Mark Wilkinson ontwikkelde voor schoolwebsites.

Widgetgebieden

Of u nu kiest om een ​​reeks widgetgebieden toe te voegen, is afhankelijk van de doelgroep voor uw framework: als u of een klein team van ontwikkelaars met het thema werkt, voegt u mogelijk geen widgetgebieden toe boven de standaardzijbalk en voettekst. gebieden.

Maar als je framework door niet-technische gebruikers wordt gebruikt, kun je ze veel meer flexibiliteit geven door meerdere widgetgebieden op verschillende locaties in je thema te registreren. Naast de normale zijbalk en voettekst, kunt u widgetgebieden ook in de koptekst registreren, vóór en / of achter de inhoud en onder het voettekstgebied..

Het themakader dat ik gebruik voor mijn client-sites bevat vier widgetgebieden in de voettekst: de themacontrole's van deze zijn gevuld en voegen CSS-klassen hieraan toe, zodat de widgetgebieden elk de juiste breedte van de pagina innemen.

Uw widgetgebieden kunnen rechtstreeks in uw sjabloonbestanden worden gecodeerd, of u kunt beslissen (zoals ik doe) om ze toe te voegen via actiehaken op de relevante plaatsen op uw site. Dit betekent dat ze kunnen worden opgeheven in kindthema's, hetzij door alternatieve widgetgebieden of door aangepaste code.

scripts

Als een bepaald script waarschijnlijk wordt gebruikt door een aantal sites die op uw framework zijn gebouwd, of als uw gebruikers niet-technisch zijn en u extra opties wilt bieden, kunt u besluiten bepaalde scripts in uw framework op te nemen, zoals een schuifregelaar of lightbox-script. Dit kan gebruikers redden die extra plug-ins moeten installeren, maar heeft het nadeel van code-bloat als deze scripts niet nodig zijn.

Nogmaals, dit is afhankelijk van uw doelgroep en de verwachte behoeften: als u alleen met het framework werkt, raad ik aan plug-ins met deze scripts te ontwikkelen (of te identificeren) en deze te gebruiken wanneer u dit wilt.

Als u scripts opneemt, is het de moeite waard om een ​​activerings- en deactiveringsoptie op te nemen in uw themakeuzescherm.

uitbreidbaarheid

Als uw framework nu en in de toekomst nuttig zal zijn voor een reeks sites, wilt u dat het kan worden uitgebreid. Het hoofdthema dat de kern van het framework vormt, is slechts het hart van een ecosysteem dat u en de gebruikers van uw thema gebruiken om extra opties en macht toe te voegen aan hun sites. Dit omvat:

  • Kindthema's of startthema's: de lijst met deze thema's kan met de tijd groeien, vooral als u uw thema openbaar maakt
  • Plug-ins die speciaal zijn ontworpen om te werken met uw framework, vaak geactiveerd via framespecifieke hooks.

Het kan ook documentatie bevatten voor andere ontwikkelaars die willen werken met uw raamwerk: de meeste belangrijke themakaders bevatten uitgebreide documentatie die ontwikkelaars kunnen gebruiken om hun eigen sites aan te passen aan het kader of om kindthema's of plug-ins voor andere gebruikers van het framework te maken. raamwerk voor toegang.

Samenvatting

Themakaders zijn een krachtig hulpmiddel in het arsenaal van de ontwikkelaar van WordPress. Zoals we hebben gezien, zijn ze van vitaal belang voor duizenden niet-technische site-eigenaren die ze gebruiken om aangepaste WordPress-sites te maken. Maar ze zijn ook een geweldige tool voor elke ontwikkelaar die meerdere sites gaat maken, voor persoonlijk gebruik of voor klanten. 

Themakaders hebben een aantal kenmerken die hen die kracht geven: ze zijn uitbreidbaar en flexibel en maken het voor u of uw gebruikers gemakkelijk om aangepaste sites te maken met behulp van kindthema's en toegang te krijgen tot de functies en haken van uw kader.

Na te hebben bekeken hoe themakaders werken, identificeert u in het volgende deel van deze serie wat uw kader moet doen en voor wie het moet werken, wat u zal helpen beslissen over de meest geschikte ontwikkelingsbenadering.