Wordpress: 'Geplaatst onder Custom Post Type' op voorpagina

E-mailadres Afdrukken PDF

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:

Geplaatst onder 
<?php $post_type = get_post_type(get_the_ID());
echo $post_type; ?>

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:

Geplaatst onder 
<?php $post_type = get_post_type(get_the_ID());
$post_type = ucfirst($post_type);
echo $post_type; ?>

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:

Geplaatst onder 
<?php $post_type = get_post_type(get_the_ID());
if ($post_type == 'nieuws'){echo 'Nieuwsberichten.';}
elseif ($post_type == 'vraag'){echo 'Vragen aan XYZ.';}
elseif ($post_type == 'persbericht'){echo 'Persberichten.';}
elseif ($post_type == 'post'){echo 'Algemeen.';} ?> // Let op: deze regel voeg ik toe, zodat ook het standaard post type 'post' het kenmerk 'Algemeen' meekrijgt i.p.v. blanco blijft.

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:

if ($post_type == 'nieuws'){echo '<a href="/www.voorbeeld.nl/nieuws" title="Nieuwsberichten">Nieuwsberichten.</a>';}

Zoals je ziet nog niet zo gedistingeerd als categorieën, maar wel bruikbaar!

Plaats reactie


Beveiligingscode
Vernieuwen

Klanten Login

Neem Contact Op

070 - 415 13 54

Ma. t/m Vrij. van 09:00 - 17:30

Stuur een Email