Code voorbeeld

Posts per page, per custom post type (CPT)

Leestijd: 2 minuten (319) words
profile image

Rick de Jong

Strategie

July 08, 2015 08:04

Posts per page, per custom post type (CPT)

Aantal resultaten op een archief pagina, per 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)
{
   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');