WordPress - Laatste berichten


Met de onderstaande code maak je een overzicht van de laatst gepubliceerde berichten in WordPress. Bijvoorbeeld om te tonen om een bepaalde plaats in een website. In de code hieronder worden vrijwel alle eigenschappen van een bericht getoond, je zult er zelf nog wel elementen om heen moeten zetten. Eventuele onderdelen van het bericht die je niet wilt gebruiken in je eigen template kun je uiteraard uit de onderstaande code verwijderen.

Bovenaan zie je de eigenschappen van een bericht, in dit geval gaat het alleen om posts_per_page. Hiermee kan het aantal berichten worden aangegeven, in dit geval ingesteld op 5. Als eerste wat betreft het bericht wordt de permalink (the_permalink) getoond met eronder de uitgelichte afbeelding en de URL van de uitgelichte afbeelding. Onder de afbeelding zie je de titel, de tijd van publicatie, de categorieŽn en een alternatieve manier (uitgecomment) om categorieŽn te tonen. Als laatste zie je alle tags.

<?php
        $params = array(
                'posts_per_page' => 5, // Aantal berichten
        );
        $latest_post = new WP_Query($params);
        if($latest_post->have_posts()):
                while( $latest_post->have_posts() ) : $latest_post->the_post();
                        echo the_permalink();
                        echo get_the_post_thumbnail($post->ID, 'thumbnail', true);
                        echo wp_get_attachment_url(get_post_thumbnail_id($post->ID));
                        echo the_title();
                        echo the_time('j F Y');
                        echo the_category(', ');
                        //foreach((get_the_category()) as $category):
                                // echo $category->cat_name;
                                // echo get_category_link( $category->term_id );
                        //endforeach;
                        echo the_tags(', ');
                        //foreach((get_the_tags()) as $tag):
                                // echo $tag->name;
                                // echo get_tag_link($tag->term_id);
                        //endforeach;
                endwhile;
        endif;
        wp_reset_query();
?>

Parameters

Bovenaan in de code zie je $params = array( staan. In dit gedeelte worden de verschillende parameters ingesteld voor het tonen van de berichten. Zo is hierboven met 'posts_per_page' => 5 ingesteld dat er maximaal vijf berichten worden getoond. Maar zo kun je ook instellen dat alleen berichten uit een bepaalde categorie getoond moeten worden of alleen berichten die aan een specifieke tag (op basis van ID) zijn gekoppeld.

Je kunt zo ook parameters combineren om voorwaardes te maken. Zo worden in het voorbeeld hieronder alleen berichten getoond uit de categorie met het ID 2 en ook zijn gekoppeld aan tag ID 14. Onder het voorbeeld meer mogelijkheden met parameters.

$params = array(
        'posts_per_page' => 5, // Aantal berichten
        'cat' => 2, // ID van categorie
        'tag_id' => 14, // ID van tag
);

CategorieŽn

Het ID van een categorie kan opgezocht worden door in WordPress te gaan naar het overzicht met categorieŽn en op de gewenste categorie te klikken. In de URL in de adresbalk zal dan tag_ID= staan gevolgd door het ID van de betreffende categorie.

Berichten uit enkele categorie

'cat' => 2,


Berichten uit meerdere categorieŽn

'category__in' => array(1,2,17),


Berichten juist niet tonen uit bepaalde categorieŽn

'category__not_in' => array(1,2,17),


Berichten die in meerdere categorieŽn vallen

'category__and' => array(1,2,17),

Tags

Zoals op de bovenstaande manier berichten worden getoond uit categorieŽn kunnen ook berichten die aan een specifieke tag zijn gekoppeld worden getoond. Het ID van een tag kan op dezelfde manier worden opgezocht als het zoeken van een ID van een categorie.

Berichten gekoppeld aan tag

'tag_id' => 14,


Berichten gekoppeld aan meerdere tags

'tag__in' => array(14,16,18),


Berichten die juist niet gekoppeld zijn aan tags

'tag__not_in' => array(14,16,18),


Berichten die gekoppeld moeten zijn aan tags

'tag__and' => array(14,16,18),

Berichten

De onderstaande opties richten zich op het specifiek tonen van een bericht of meerdere berichten op basis van ID. Ook kunnen berichten juist worden uitgesloten op basis van ID.

Specfiek berichten tonen op basis ID

'post__in' => array(39,42),


Specfiek berichten niet tonen op basis ID

'post__not_in' => array(39,42),


Sticky posts negeren

'ignore_sticky_posts' => true,


Eerste twee berichten overslaan

'offset' => 2,

Custom Field

Berichten tonen op basis van custom fields, bijvoorbeeld indien een veld is ingevuld.

Op basis van Custom Field (Indien ingevuld)

'meta_key' => 'naam-veld',


Op basis van waarde in Custom Field

'meta_value' => 'waarde',

Datum

Er kunnen redenen zijn om berichten te willen tonen op basis van datum. Bijvoorbeeld alleen berichten uit een specifiek jaar of een specifieke maand. Mogelijkheden hieronder.

Op basis van seconden

'second' => 44,


Op basis van minuten

'minute' => 44,


Op basis van uur

'hour' => 13,


Op basis van dag van de maand

'day' => 17,


Op basis van weeknummer

'w' => 25,


Op basis van maandnummer

'monthnum' => 3,


Op basis van jaar

'year' => 2012,

Sorteren

Ook kan er invloed uitgeoefend worden op de manier waarop berichten in een overzicht getoond moeten worden. Zo kan er gekozen worden om berichten op datum te sorteren.

Sorteren (Oplopend en aflopend)

'order' => 'DESC', // DESC is van hoog naar laag, ASC is van laag naar hoog.


Sorteren op datum, auteur, titel, etc.

'orderby' => 'date', // Andere opties zijn onder andere: author, ID, title, modified, rand.

Auteur

Berichten tonen op basis van auteur.

'author' => 1,4

Status

Berichten tonen op basis van status. Zo kun je bijvoorbeeld berichten tonen die ingepland zijn of opgeslagen zijn als draft. Op deze manier kun je bijvoorbeeld een agenda opzetten.

'post_status' => 'future', // Pending, Trash, Private

Tonen enkel bericht op basis van ID

Het tonen van een enkel bericht op basis van een ID kan overigens nog eenvoudiger dan hierboven genoemd. In dat geval kun je de onderstaande code gebruiken. Je kunt overigens ook op dezelfde manier content van een specifieke pagina tonen.

<?php
        $postID = 37;
        $getPost = get_post($postID);
        echo $getPost->post_title;
        echo apply_filters('the_content', $getPost->post_content);
?>

Totale aantal berichten

Met de onderstaande code is het mogelijk om het totale aantal berichten te tonen.

<?php
        $published_posts = wp_count_posts()->publish;
        echo $published_posts;
?>