WordPress: Beiträge einer Kategorie von der Startseite ausschließen

Abrakadabra - und die Kategorie ist wech...

Werbung
Nicht immer ist es im Theme möglich, bestimmte Kategorien von der Anzeige auf der Beitragsseite auszuschließen. Mit einem kleinen PHP-Skript lässt sich dieses Problem elegant lösen.
Nicht immer ist es im Theme möglich, bestimmte Kategorien von der Anzeige auf der Beitragsseite auszuschließen. Mit einem kleinen PHP-Skript lässt sich dieses Problem elegant lösen.
☆ Dieser Artikel ist Teil unserer WordPress-Trickkiste – hier finden Sie Tipps, Tricks und Tutorials zum populären Content Management System WordPress… ☆

Viele auf Basis von WordPress betriebene Blogs nutzen die Möglichkeit, Beiträge mit Hilfe von Kategorien zu strukturieren. Besonders bei umfangreichen Blogs oder komplexen Themen ist das sinnvoll.

Wer Kategorien in seinem Blog einsetzt, kann damit aber noch ganz andere Dinge realisieren. So könnte es gewünscht sein, Artikel bestimmter Kategorien von der Beitragsseite auszuschließen, wie etwa

  • ältere Beiträge (z.B. Kategorie „Archiv“),
  • Portfolio und Kundenprojekte (z.B. Kategorie „Portfolio“) oder
  • Beiträge, die schlicht von geringem Interesse sind (z.B. Kategorie „Sonstiges“).

Allerdings bietet nicht jedes Theme die Möglichkeit, Kategorien auf der Blogseite zu unterdrücken. Mit ein paar Zeilen Code in der functions.php kann dieses Feature aber problemlos umgesetzt werden.

Die Datei functions.php ist übrigens Teil jedes Themes und befindet sich im Verzeichnis ./wp-content/themes/<Name des Layouts>. Eine Bearbeitung ist mit jedem Texteditor möglich.

IDs der Kategorie(n) ermitteln

Bevor wir loslegen, müssen Sie die IDs der fraglichen Kategorien herausfinden:

Die einfachste Möglichkeit besteht darin, im Adminpanel in die Ansicht „Kategorien“ innerhalb von „Beiträge“ zu wechseln und den Mauszeiger über einen der verlinkten Kategorienamen zu positionieren.

In der angezeigten URL suchen Sie nun nach dem Parameter „tag_ID“. Dessen numerischer Wert gibt die ID der jeweiligen Kategorie wieder.

Gut zu wissen: Diese ID bleibt immer konstant, selbst nach einem späteren Bearbeiten der Kategorie.

Eine Kategorie von der Beitragsseite ausschließen

Der folgende Codeblock entfernt eine bestimmte Kategorie von der Beitragsseite. Es werden dort also keine Artikel mehr angezeigt, die dieser Kategorie zugeordnet wurden:

/* Kategorie von Beitragsseite ausschließen. */
function my_exclude_categories_from_blog( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( 'cat', '-7' );
    } }
add_action( 'pre_get_posts', 'my_exclude_categories_from_blog' );

In Zeile 4 tragen Sie nun die ID der auszuschließenden Kategorie ein (in meinem Beispiel ist das die ID 7). Das Minuszeichen zeigt an, dass die Kategorie nicht länger berücksichtigt werden soll.

So funktioniert’s:

In Zeile 3 stellen wir sicher, dass die fragliche Kategorie nur von der Beitragsseite entfernt wird (andernorts bleibt sie erhalten und Beiträge lassen sich auch über die Suchfunktion finden).

Zeile 4 setzt als Wert für den Parameter „cat“ (für „category“) die ID der auszuschließende Kategorie (mit einem Minuszeichen).

Schlußendlich nutzen wir in Zeile 6 den Filter Hook „pre_get_posts“ für die Änderung der Main Query und wenden darauf unsere Funktion an.

Mehrere Kategorien von der Beitragsseite ausschließen

Dasselbe Spiel funktioniert auch mit mehr als einer Kategorie:

/* Mehrere Kategorien von Beitragsseite ausschließen. */
function my_exclude_categories_from_blog( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( 'cat', '-7,-5,-8' );
    } }
add_action( 'pre_get_posts', 'my_exclude_categories_from_blog' );

Tragen Sie in Zeile 4 einfach eine kommagetrennte Liste der auszuschließenden Kategorien ein. Wichtig: Das Minus-Symbol vor jeder ID nicht vergessen!

Nur eine Kategorie auf der Beitragsseite anzeigen

Natürlich kann auch das Gegenteil von dem bisher Geschriebenen gewünscht sein, nämlich ausschließlich Beiträge einer festgelegten Kategorie auf der Startseite zu präsentieren.

Ein sinnvoller Einsatz wäre beispielsweise das Einrichten einer Kategorie „News“. Die Blogseite würde so nur Neuigkeiten beinhalten und nichts anderes.

Vielleicht erahnen Sie schon die Lösung? Richtig…

/* Ausschließlich Beiträge einer Kategorie auf der Beitragsseite zeigen. */
function my_show_only_category_in_blog( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( 'cat', '7' );
    } }
add_action( 'pre_get_posts', 'my_show_only_category_in_blog' );

In Zeile 4 findet sich wieder die Kategorie mit der ID 7, dieses Mal ohne Minuszeichen. Für WordPress bedeutet das, alle anderen Kategorien auszublenden und ausschließlich Beiträge auszugeben, die der Kategorie 7 zugeordnet wurden.

Ich habe den Funktionsnamen in „my_show_only_category_in_blog“ geändert, um dem Sinn der Funktion gerecht zu werden. Aber eigentlich ist es egal, Sie können hier Ihrer Kreativität freien Lauf lassen und die Funktion ganz nach Wunsch benennen.

Übrigens: Auch mehrere Kategorien sind möglich. Einfach die IDs der anzuzeigenden Kategorien mit Kommata trennen. Es werden dann nur diese auf der Blogseite dargestellt.


Werbung

Hier könnte Ihre Werbung stehen! Jetzt informieren...


Stand der Informationen: Juni 2022
Wichtig: Bitte beachten Sie die Nutzungsbedingungen und rechtlichen Hinweise für diesen Beitrag!