RSS
 

WordPress: Alle Beiträge einer Kategorie separat darstellen

28 Sep

Einige werden es vielleicht schon bemerkt haben: Seit einiger Zeit bloggt Martha auch auf diesem Blog. Um unsere Beiträge separat zu halten habe ich für ihre Beiträge eine neue Kategorie „Martha“ erstellt. Alle Beiträge dieser Kategorie sollen nicht im WordPress Loop („The Loop„) der Hauptseite index.php erscheinen, sondern auf einer extra dafür angelegten Seite.

Im ersten Schritt müssen Beiträge mit der Kategorie „Martha“, die bei mir die ID 36 hat, im WordPress Loop der index.php ausgeblendet werden. Die ID einer Kategorie kann man beispielsweise erfahren, in dem man im WordPress Admin-Bereich auf ArtikelKategorien klickt und dann mit der Maus über die gewünschte Kategorie fährt. Der GET-Parameter tag_ID verrät die ID (…&tag_ID=36&…).

In der index.php muss dazu nach der have_posts() Bedingung eine Zeile (bei mir Zeile 3, hängt aber natürlich vom verwendeten Template ab) eingefügt werden. Mit dem Parameter cat=-36 werden Beiträge der Kategorie 36 ausgeschlossen. Wenn man mehrere Kategorien ausschliessen will kann man nach folgendem Schema beispielsweise zusätzlich die Kategorien 3, 6 und 7 ausschliessen: cat=-36,-3,-6,-7.

<?php get_header(); ?>
	<!?php if (have_posts()) : ?>
	    <?php query_posts($query_string . '&cat=-36'); ?>
		<?php while (have_posts()) : the_post(); ?>
		    // Darstellung des Beitrags
		<?php endwhile; ?>
	<?php else : ?>
		// Fehlermeldung, falls das Gesuchte nicht gefunden wurde
	<?php endif; >
	<?php get_sidebar(); >
<?php get_footer(); >

Marthas Beiträge sollen auf einer separaten Seite erscheinen, dazu muss erstmal ein Template erstellt werden. Dazu haben ich die index.php meines Templates kopiert und in blogmartha.php umbenannt. Danach habe ich die Datei im Texteditor bearbeitet und den Header (Zeilen 1 bis 5) ergänzt. Ähnlich wie zuvor muss die Query bearbeitet werden (Zeile 10), diesmal wird keine Kategorie ausgeschlossen sondern explizit nur die Beiträge einer Kategorie (ID 36) geladen.

<?php
/*
Template Name: Blogmartha
*/
?>

<?php get_header(); ?>
	<?php if (have_posts()) : ?>
	    <?php query_posts('cat=36'); ?>
		<?php while (have_posts()) : the_post(); ?>
			// Darstellung des Beitrags
		<?php endwhile; ?>
	<?php else : ?>
		// Fehlermeldung, falls das Gesuchte nicht gefunden wurde
	<?php endif; ?>
	<?php get_sidebar(); ?>
<?php get_footer(); ?>

Der Header ist wichtig für die Identifizierung beim Anlegen der Seite. Dazu geht man im WordPress Admin-Bereich auf SeitenErstellen und wählt dort im rechten Bereich unter „Template“ das entsprechende Template (in meinem Fall Blogmartha) aus. Der Inhalt der Seite ist irrelevant, da er nicht dargestellt wird. Als Titel wählt man den in der Navigation gewünschten Titel. Danach publiziert man die Seite.

Als Ergebnis erhält man am WordPress Frontend einen weiteren Eintrag in der Seitennavigation mit dem angegebenen Titel in dem alle Beiträge der eingestellten Kategorie(n) dargestellt werden.

Als zusätzlichen Eye-Catcher habe ich in der Sidebar noch das Plugin/Widget Recent Category Posts positioniert in dem die 5 letzten Beiträge der Kategorie „Martha“ dargestellt werden.

 
 

Kommentare

 

 
  1. Blog zur DKB Kreditkarte

    22/03/2013 16:46

    Hallo und vielen Dank für den hilfreichen Beitrag.
    Hab genau das gesucht um eine separate Seite zu erstellen, welche nur die Beiträge mit den Erfahrungen zur DKB Kreditkarte im Ausland darstellen soll. Ich hoffe es wird mit meinem Template passen.