Code snippets

Paginatie functies voor je maatwerk WordPress thema

Als je je eigen WordPress thema aan het bouwen bent, of een bestaand thema aan het aanpassen, en je wilt paginatie toevoegen, dan kan je wel eens rare resultaten krijgen. WordPress hanteert namelijk verschillende variabelen voor de homepage en voor de andere pagina’s. Als je dit niet weet, kan je soms eindeloos zoeken waarom je toch de “page not found”/404 foutmelding krijgt bij paginatie/paging (wat is het Nederlandse woord hiervoor eigenlijk?).
Om de eigenaardigheden van WordPress hieromtrent te ondervangen gebruik ik altijd de volgende functies (zet in je functions.php):

/*
*     Pagination functionality
*/

function paged() {
        if ( get_query_var('paged') ) {
        $paged = get_query_var('paged');
        } elseif ( get_query_var('page') ) {
            $paged = get_query_var('page');
        } else {
            $paged = 1;
        }
        return $paged;
}

function get_pagination_html($the_query) {
        $big = 999999999; // need an unlikely integer
        $html = paginate_links( array(
            'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
            'format' => '?paged=%#%',
            'current' => max( 1, paged() ),
            'total' => $the_query->max_num_pages,
            'type'  => 'list'
        ) );

    return $html;
}

Je kan nu op de gewenste pagina de volgende code gebruiken:

$args = array(
  'order'     => 'DESC',
  'paged'     => paged(),
  'post_type' => 'post',
);

$the_query = new WP_Query( $args );

if ( $the_query->have_posts() ) {
  while ( $the_query->have_posts() ) {
    $the_query->the_post();
    ?>
        <h1><a href="<?php the_permalink();?>"><?php the_title();?></a></h1>
    <?php
   }
}
  echo get_pagination_html($the_query);
  wp_reset_postdata();
  ?>

In dit voorbeeld zie je dat het resultaat van de functie paged() als input wordt meegegeven aan de argumenten van de wp_query.

Tenslotte krijgt de paginatie html nog de query mee als variabele. De output is een standaard WordPress paginatie.

Related Articles

  • Export functie naar .csv maken

    Als je in je eigen WordPress plugin of thema een export functie wil maken naar een .csv bestand kan dat heel eenvoudig. Op de plek waar je de link wil...
  • Bij vorige volgende posts binnen dezelfde categorie blijven

    WordPress heeft een hoop functionaliteiten ingebouwd, zoals ook bijvoorbeeld de get_previous_post(), get_next_post(), of get_previous_post_link() functies. Maar wat als je de vorige (of volgende) post wilt van dezelfde categorie? Dat lijkt...
  • Als je wilt zoeken binnen WordPress users, of in Ultimate Member members, (wat op hetzelfde neerkomst), zou je denken dat dit makkelijk gedaan kan worden met een meta_query, of met...
  • Een enkele sticky post tonen

    Sticky posts zijn handig als je bijvoorbeeld op je homepage één post wilt tonen die blijft “plakken”, dus niet alleen de meest recente, maar een post of artikel die daar...

Laat een reactie achter