De meeste postformaten gebruiken Postformaten in de lus gebruiken

In het eerste deel van deze serie heb ik besproken wat postformaten zijn en waarom je ze zou moeten gebruiken. Nu is het tijd om te leren hoe u postformaten kunt gebruiken om de hoofdlus in uw thema te besturen om elk type bericht correct weer te geven.


Postformaten inschakelen

Voordat u postformaten in een thema kunt gebruiken, moet u ondersteuning voor hen registreren. Elk berichttype, ingebouwde (dat wil zeggen berichten en pagina's) of aangepaste berichttypen moeten ondersteuning hebben voor posttypen die afzonderlijk zijn geregistreerd. 

Voor berichten gebruikt u de function add_theme_support () als onderdeel van je thema-instelling in functions.php, zoals dit:

add_action ('after_setup_theme', 'slug_post_formats'); function slug_post_formats () add_theme_support ('post-formats', array ('aside', 'image', 'video', 'audio', 'quote', 'link', 'gallery',)); 

Voor andere berichttypen, inclusief pagina's en aangepaste berichttypen, zou u add gebruiken post_type_support (). Als u wilt dat pagina's dezelfde postformaten ondersteunen, geeft u WordPress gewoon aan dat u dit wilt:

add_post_type_support ('pagina', 'post-formaten');

U kunt vergelijkbare code gebruiken om ondersteuning voor aangepaste berichttypen toe te voegen, of u voegt 'post-formaten' toe aan het argument 'ondersteunt' in register_post_type () wanneer je het berichttype maakt.

Verschillende berichtformaten voor verschillende berichttypen

In het vorige gedeelte van de code die ik toonde, hebt u ondersteuning voor andere berichttypen toegevoegd aan dezelfde berichtindelingen die voor berichten zijn ingeschakeld. Als u wilt dat uw aangepaste berichttype verschillende postformaten ondersteunt, is dat ook mogelijk met add_post_type_support () door er eenvoudig een reeks postformaten aan te geven.

Als u bijvoorbeeld ondersteuning voor galerijen en afbeeldingen aan pagina's wilt toevoegen terwijl u video toevoegt aan een aangepast berichttype met de naam 'producten' en alle postformaten naar berichten, doet u het volgende:

add_action ('after_setup_theme', 'slug_post_formats'); function slug_post_formats () add_theme_support ('post-formats', array ('aside', 'image', 'video', 'audio', 'quote', 'link', 'gallery',)); add_post_type_support ('pages', 'post-formats', array ('gallery', 'image')); add_post_type_support ('producten', 'post-formaten', array ('video')); 

Postformaten in de lus gebruiken

Nu uw thema postformaten ondersteunt, is het tijd om te leren hoe u ze kunt gebruiken.

Introductie van get_template_part ()

Wat postformaten cool maakt, is dat we één main, loop, met onze verschillende opmaak voor elk postformaat in afzonderlijke bestanden kunnen hebben. Deze functionaliteit is te danken aan twee functies, waarvan je de eerste moet leren kennen get_template_part ().

Hoewel het wel gebruikt vereisen(), als je ver genoeg terug traceert in de broncode, get_template_part () geeft ons een flexibelere en meer vergevingsgezinde manier om sjabloonbestanden op te nemen in andere sjablonen waarmee we niet overweg kunnen vereisen(). Ik zeg vergevingsgezind omdat, in tegenstelling tot vereisen(), get_template_part () kan werken met bestandspaden die niet bestaan.

Bijvoorbeeld, get_template_part ('content', 'foo'); zal proberen het bestand te laden inhoud foo.php, maar als het niet bestaat, zal het proberen te laden content.php in plaats daarvan. In tegenstelling tot, vereisen ('content-foo.php'); zal een fout retourneren als inhoud foo.php bestaat niet, of content.php bestaat of niet.

Onthoud dat get_template_part () is aangepast voor dit specifieke gebruik omdat het bestanden laadt ten opzichte van de hoofdmap van het huidige thema. Als gevolg hiervan hoeft u het niet te gebruiken get_template_directory_uri () of gelijkaardige functies om het pad op te geven. U kunt het nog steeds gebruiken om bestanden in submappen van de hoofddirectory van het thema te laden door het pad, relatief ten opzichte van de hoofdmap van het thema, in het eerste argument op te geven. Bijvoorbeeld om te laden inhoud main.php vanuit een subdirectory genaamd 'parts' die u zou gebruiken get_template_part ('parts / content', 'main');.

Introductie van get_post_format ()

De tweede functie die dit alles mogelijk maakt is get_post_format (), waarmee het berichtindeling voor het huidige bericht in de lus wordt geretourneerd. Hoewel het veel toepassingen heeft, is deze functie het hoofdgebruik als argument voor get_template_part (). Dit is wat ons in staat stelt om inhoudsdelen specifiek voor een postformaat op te nemen, zoals we in de volgende sectie zullen zien.

Vanwege de flexibiliteit van get_post_format () besproken in de laatste sectie, kunnen we gebruiken get_post_format () als een van zijn argumenten, zelfs als er geen inhoudsdeel is in het thema voor alle gebruikte postindelingen.

Inclusief sjabloondelen in de lus

Nu je de twee functies begrijpt die specifieke delen van het postformaat mogelijk maken, laten we het allemaal samenvoegen. 

Bekijk de hoofdlus van Twenty Fourteen:

Zoals je kunt zien is dit een heel simpele lus. De daadwerkelijke opmaak voor de berichten bevindt zich in de afzonderlijke inhoudsdelen. Vanwege de vergevingsgezinde aard van get_template_part () als een inhoudsdeel voor een specifiek postformaat niet bestaat, zal WordPress hierop terugvallen content.php. Dat betekent dat als de huidige post het formaat heeft 'video' WordPress eerst zal proberen te laden inhoud video.php, en als dat niet wordt gevonden, zal het terugvallen content.php.

Kindenthema's en inhoudsdelen

Zoals ik al eerder zei, get_template_part () is kindenthema bewust. Dat betekent dat WordPress eerst een bestand zoekt in de map van het kindthema vóór het bovenliggende thema, als een kindthema in gebruik is.

Als gevolg hiervan is het een goede gewoonte om te gebruiken get_template_part ('content', get_post_format ()); om je hoofdlus op te nemen in je pagina, zelfs als je thema geen postformaten ondersteunt. Op die manier kan een kindthema ondersteuning voor een postindeling declareren en eigen inhoudsonderdelen toevoegen voor de post-indelingen die het ondersteunt.


Ga vooruit en formaat berichten

Nu u weet hoe u ondersteuning voor uw thema voor postformaten kunt toevoegen en verschillende sjabloononderdelen kunt instellen op basis van het berichtformaat, is het tijd om na te denken over hoe u ze in uw thema kunt gebruiken. Ik zal dit in de rest van deze serie bespreken. Bekijk ook zeker de code van thema's, zoals Twenty Fourteen, die postformaten goed implementeren om inspiratie op te doen.