Nagenoeg elke voorpagina van een willekeurig Wordpress blog is ermee toegerust (zo ook het nieuwe standaard theme Twenty Ten): op de voorpagina zie je onder welke categorie een artikel is geplaatst. Dat is een hele handige functie omdat deze categorisering een zeer bruikbaar sorteermechanisme vormt.
Custom post types kun je in een CMS-context ook zien als een sorteermechanisme op het hoogste abstractieniveau. Je categoriseert hiermee immers de standaard post naar een bepaald kenmerk (product, eigenschap, soort etc.) Echter, terwijl het gebruik van categorieën in de taxonomieën van Wordpress volledig zijn verweven en geïntegreerd, is hiervan nog geen sprake bij het gebruik van Custom Post Types (hoewel dit al een grote stap is voor Wordpress naar een volwaardig CMS). Ik liep daardoor onlangs tegen een praktisch (maar niet onoverkomelijk) probleem aan, dat me nog even bezig heeft gehouden.
De situatie: voor een klant heb ik een Wordpress powered CMS gemaakt, waarbij de regelmatig terugkerende content in drie categorieën te plaatsen valt: nieuws, vragen en persberichten. Om plaatsing en vormgeving op de website consistent en voor de beheerders eenvoudig te maken, heb ik voor alle drie custom post types aangemaakt.
Op de voorpagina wil ik aangeven (zoals in het voorbeeld in de 1e alinea) onder welke Custom Post Type het bericht geplaatst is. Daarbij maak ik gebruik van de functies get_post_type() en get_the_ID().
Op de plek waar dit terecht moet komen, heb ik de volgende code geplaatst:
Helaas zijn alle ID's in mijn functions.php in kleine letters opgenomen. Dat staat een beetje vreemd. Ik wil de eerste letter graag als hoofdletter weergeven. Daartoe kent PHP de functie ucfirst(). De aangepaste code ziet er als volgt uit:
Nu ziet het er al beter uit. Echter, ik wil graag dat niet het ID gebruikt wordt, maar een iets uitgebreidere omschrijving, omdat het er zo wel erg kort door de bocht uitziet. Ik ken de ID's van de custom post types, en laat op basis van die ID's de gewenste tekst op het scherm weergeven. De code ziet er nu als volgt uit:
En klaar is kees. Wil je hieraan ook links naar specifieke pagina's toevoegen? Een kwestie van <a></a> eromheen en klaar is kees. Een voorbeeldje:
Zoals je ziet nog niet zo gedistingeerd als categorieën, maar wel bruikbaar!



Stuur een Email