Code voorbeeld

Posts per page, per custom post type (CPT)

Leestijd: 2 minuten (338 woorden)
profile image

Rick de Jong

Strategie

08 juli 2015 08:04

Aantal resultaten op een archief pagina, per post type

Custom Post Type

Soms kan het voorkomen dat je per type post type een ander aantal berichten wilt tonen op een pagina. Stel je voor dat je bijvoorbeeld vijf nieuwsberichten wilt tonen in een archief, maar teamleden (post-type team) wilt tonen in blokken van drie, met bijvoorbeeld negen leden op een pagina.

Standaard is er binnen WordPress geen oplossing om op basis van een posttype of categorie een x-aantal berichten per pagina te tonen. Dit is puur een algemene instelling die geldt voor de gehele site. Onderstaande functie helpt je hier een handje bij en stelt je in staat om per post type aan te geven hoeveel resultaten we willen tonen op een archief pagina.

Voorbeeldcode

Pas per break in onderstaande code de naam van het post type aan met daarachter het aantal posts per pagina.

// posts per page based on CPT
function tsd_custom_posts_per_page($query)
{
    // do not apply logic within the admin
    if (is_admin()) return $query;

    switch ( $query->query_vars['post_type'] )
    {
        case 'teamleden':  // Post Type voor teamleden
            $query->query_vars['posts_per_page'] = 9;
            break;
        case 'woningen':  // Post Type voor woningen
            $query->query_vars['posts_per_page'] = 16;
            break;
        default:
            // Do not change posts per page by default, do this in WordPress itself
            break;
    }
    return $query;
}
add_filter( 'pre_get_posts', 'tsd_custom_posts_per_page' );

Een andere oplossing, puur gericht op één post-type, kan ook onderstaande code zijn

function tsd_custom_posts_per_page( $query ) {
    if (is_post_type_archive('team') && $query->query['post_type'] == 'team' ) {
       $query->query_vars['posts_per_page'] = 9;
    }
    return $query;
 }
 add_action( 'pre_get_posts','tsd_custom_posts_per_page' );