Ähnliche Seiten auf Basis der Kategorie in WordPress

Viele Einsätze von WordPress sind mit dem Ziel eines CMS umgesetzt und die Nutzung der Seiten steht im Vordergrund. Nicht selten möchte man dem Leser Seiten oder Beiträge anbieten, die aus der gleichen Kategorie kommen und den Leser auf der Site halten. Warum nicht, dazu reicht eine kleine Funktion, die auf Basis der Kategorie-ID ähnliche Beiträge listet.

Den Leser auf der Site halten ist nicht immer einfach. Es gilt Information zu bieten und es fällt schwer, gerade in Blogs, die alten Beiträge wieder dem Leser zugänglich zu machen. In dem Zusammenhang könnte man dem Leser Beiträge anbieten, die aus der gleichen Kategorie kommen und den Leser auf der Site halten. Warum nicht, dazu reicht eine kleine Funktion, die auf Basis der Kategorie-ID ähnliche Beiträge listet.

Die folgende kleine Funktion, abgelegt als Plugin oder in der functions.php des Themes, gibt Beiträge in Abhängigkeit der Kategorie aus. Die Funktion lässt drei Parameter zu:

  • $limit (int) Anzahl der auszugebenden Beiträge
  • $catName (bool) Kategoriename ausgeben, TRUE oder FALSE
  • $title (string) String für einen Text über allen auszugebenden Beiträgen

Sie hat keine direkte Ausgabe, so dass man die Inhalte auch übergeben kann. Will man sie im einfachsten Fall in einem Template einsetzen, zum Beispiel im Sidebar, dann die sidebar.php, ist folgende Syntax aufzurufen: echo fb_cat_related_posts();.


function fb_get_cat_related_posts( $limit = 5, $catName = TRUE, $title = '<h3>Recent Pages</h3>' ) {
	
	if ( !is_single() ) // nur bei Beiträgen eine Ausgabe, kann angepasst/gelöscht werden
		return;
	
	$limit = (int) $limit;
	$output  = '';
	$output .= $title;
	
	$category = get_the_category();
	$category = (int) $category[0]->cat_ID;
	
	if ( $catName )
		$output .= __( 'Kategorie: ' ) . get_cat_name($category) . ' ';
	
	$output .= '<ul>';
	
	$args = array(
		'numberposts' => $limit,
		'category' => $category,
	); 
	
	$recentposts = get_posts( $args );
	foreach($recentposts as $post) {
		setup_postdata($post);
		$output .= '<li><a href="' . get_permalink($post->ID) . '">' . get_the_title($post->ID) . '</a></li>';
	}
	
	$output .= '</ul>';
	
	return $output;
}

Die Funktion stellt nur eine Basis dar und kann natürlich beliebig erweitert werden. Ebenso könnte man diverse Abfragen integrieren, so dass wenn es keine Artikel gibt, auch keine Überschrift ausgegeben wird.
Aktuell werden auch die Beiträge der Unterkategorien gelistet.

Viel Spass damit, vielleicht hat der eine oder andere nützliche Erweiterungen und legt die dann hier in den Kommentaren ab.

Comments are closed.