Posts per page per custom post type (CPT)

door in

Posts per page per custom post type (CPT)

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.

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

Code


// posts per page based on CPT
function tsd_custom_posts_per_page($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:
            break;
    }
    return $query;
}

if( !is_admin() )
{
    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;
    }
}
add_action('pre_get_posts','tsd_custom_posts_per_page');

That's it

Een eenvoudige functie, maar een die handig kan zijn in het gebruik van thema ontwikkeling in WordPress, waarbij je werkt met posttypes.

Vind je dit bericht interessant?

Vind je dit bericht interessant? Dan zou ik het erg waarderen als je een like of andere "social-share" achter laat ;)