Meteen naar de inhoud

Een categorie uitsluiten uit de WordPress loop

Deze keer een korte tip die van pas kan komen wanneer je niet alle artikelen (berichten) standaard wilt tonen in je blog overzicht. Je kunt er eenvoudig voor zorgen dat berichten uit een bepaalde categorie niet meegenomen worden in de ‘WordPress loop’. Daarvoor moet je wel de code induiken.
Ingewikkeld is het echter niet en je zult zien dat als je eenmaal de smaak te pakken hebt je ontdekt dat je hier eenvoudig nog veel meer trucs mee uit kunt halen.

Voordat je begint: verzeker je ervan dat je code wijzigingen altijd eerst uitvoert binnen een testomgeving! En als je die niet mocht hebben: maak er dan één. In Kickstart WordPress lees je hoe je dat eenvoudig doet.

Aanpassingen om de ‘WordPress loop’ anders te laten werken doe je rechtstreeks in je theme. De bestanden die je nodig hebt bevinden zich in /wp-content/themes/themenaam. Maar waar vind je het stukje code dat je precies moet aanpassen? Voor een beginner is dat nog wel het lastigste deel, want de plek waar de code zich bevindt kan van theme tot theme verschillen.Vaak zit de code rechtstreeks in de index.php, maar je zou ook bestanden als blog.php of loop.php tegen kunnen komen. Soms in het dus even zoeken. In ieder geval ben je op zoek naar een stukje code dat er ongeveer als volgt uit ziet:

Maar de exacte code kan van theme tot theme verschillen. In ieder geval ben je op zoek naar code waarin de code while ( have_posts() )… voorkomt. Daar kun je in je eigen theme op zoeken. In de meeste editors kun je zoeken met de toetscombinatie cntrl-F (op Apple machines zal dit anders werken).

Gevonden? Dan maak je nu de volgende aanpassing:


<? php query_posts('cat=-3'); ?>

<? php if ( have_posts() ) : ?>

<? php while ( have_posts() ) : the_post(); ?>

Verder vervolg je de code zoals deze al bestaat. Per saldo voeg je dus slechts één regel toe vlak boven de start van de loop. Deze code sluit categorie nummer drie uit. Vanaf nu zullen artikelen uit deze categorie niet meer zichtbaar zijn in het blog-overzicht. Maar hoe weet je nu wat het nummer (de ‘id’) is van de categorie die je wilt uitsluiten? Daarvoor gebruik je Phpmyadmin bijvoorbeeld, of een andere tool waarmee je even in je database kunt kijken. Open de terms tabel en zoek de categorie op die je wilt uitsluiten.

Merk op dat de terms tabel niet alleen categorieën bevat, maar ook tags. De term_id is het getal dat je nodig hebt. Ik sluit in het voorbeeld dus de categorie ‘Webdesign’ uit.

Er is nog een manier om de juiste id te bepalen. Je kunt dat ook direct in de code doen, er vanuit gaande dat je een categorie op basis van een categorienaam wilt uitsluiten. Het begin van de loop zou er dan als volgt uit gaan zien:


$category_ID = get_cat_id('webdesign');
$q = "cat=-" . $category_ID;
<? php query_posts($q); ?>
<? php if ( have_posts() ) : ?>
while ( have_posts() ) : the_post() ?>

Op deze manier kun je leuke en creatieve dingen doen met je WordPress theme! Merk overigens op dat ‘query_posts’ bedoeld is voor de ‘main loop’ van je theme. Wil je meerdere loops inzetten dan gebruik je WP_Query().

Wil je meer weten over de parameters die je kunt gebruiken bij het aanpassen van de loop? Lees dan de functie documentatie op WordPress.org.

Meer WordPress code tips en trucs? Of is dit voor jullie al een stap te ver? Ik hoor graag jullie reactie en suggesties!

Was dit artikel nuttig?

Laat het ons weten en geef je rating!

Gemiddeld 0 / 5. Aantal stemmen: 0

Nog geen stemmen, wees de eerste die dit artikel waardeert!

5 reacties op “Een categorie uitsluiten uit de WordPress loop”

  1. Hallo Robert,
    Ik heb dit geprobeerd, maar nu werken de links “oudere berichten” en “nieuwere berichten” niet meer. Weet jij hier een oplossing voor?
    Alvast bedankt.

  2. Hallo Winy,
    Je hebt dan vermoedelijk toch een foutje zitten in je bestand nu. Zonder te kijken naar de code is het moeilijk bepalen waar het probleem zit.
    Stuur het bestand maar even op: robbert @ joomblocks.com. Misschien kan ik je er snel mee helpen.

  3. Hallo Robbert,

    Erg bedankt voor je tip, heeft me erg geholpen. Weet jij nu ook hoe ik diezelfde categorie die ik net heb laten verdwijnen terug krijg op een andere pagina dan de standaard blog pagina.

    Mijn voorbeeld: Ik heb twee blogpagina’s namelijk Producten en Onderdelen (met bijna dezelfde code en templates). Nu heb ik op de Producten pagina alle berichten met de categorie ‘onderdelen’ weggelaten door jouw code:

    Dus wat moet dan de code zijn om die op de andere pagina te laten zien?

    Groetjes Sharon

  4. Hallo William
    the_post is een methode die een object terug geeft dat je in staat stelt de inhoud van een wordpress bericht (artikel) weer te geven.
    wp_query is een klasse die je gebruikt om een query op je wordpress database uit te voeren en één of meerdere berichten (artikelen) op te halen. Met andere woorden: the_post is een methode die hoort bij de klasse wp_query. Zie voor meer informatie: http://http://codex.wordpress.org/Class_Reference/WP_Query

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *