Eine Kategorie von Ihrer WordPress-Startseite ausschließen
Einleitung: Warum Kategorien von der WordPress-Startseite ausgeschlossen werden sollten
WordPress ist ein flexibles Content-Management-System (CMS), das für Blogs, Webseiten und sogar Online-Shops verwendet werden kann. Eine der grundlegenden Funktionen von WordPress ist die Möglichkeit, Beiträge in Kategorien zu organisieren. Diese Kategorien helfen nicht nur bei der internen Strukturierung der Inhalte, sondern auch bei der Navigation für die Besucher. Die Startseite eines WordPress-Blogs zeigt standardmäßig die neuesten Beiträge aller Kategorien an. In vielen Fällen kann es jedoch sinnvoll sein, bestimmte Kategorien von der Startseite auszuschließen. Dies kann verschiedene Gründe haben:
- Sie möchten eine Kategorie mit Ankündigungen oder internen Nachrichten vom Rest der Inhalte trennen.
- Sie haben eine Kategorie, die nur für bestimmte Benutzergruppen relevant ist (z. B. interne Dokumentation).
- Sie möchten die Startseite übersichtlicher gestalten und sich auf die wichtigsten Themen konzentrieren.
- Sie haben eine Kategorie mit sensiblen Inhalten, die nicht für alle Besucher sichtbar sein sollen.
Unabhängig vom Grund gibt es verschiedene Möglichkeiten, Kategorien von der WordPress-Startseite auszuschließen. Dieser Artikel zeigt Ihnen verschiedene Methoden, von einfachen Einstellungen im Backend bis hin zu komplexeren Code-Lösungen. Wir werden uns sowohl mit der Verwendung von Plugins als auch mit manuellen Code-Änderungen beschäftigen, damit Sie die für Ihre Bedürfnisse am besten geeignete Methode auswählen können.
Methode 1: Verwendung des WordPress-Backends (Anpassen der Abfrage)
Die einfachste Methode, Kategorien von der Startseite auszuschließen, ist die Verwendung der WordPress-Backend-Funktionen zur Anpassung der Hauptabfrage. Dies ist eine praktikable Lösung, insbesondere wenn Sie nur eine oder wenige Kategorien ausschließen möchten und keine komplexen Anforderungen haben. Allerdings ist diese Methode oft nicht direkt im Backend verfügbar und erfordert Code-Anpassungen in der `functions.php` Datei Ihres Themes oder die Verwendung eines Code-Snippet Plugins.
Hier ist ein Beispiel, wie Sie die Hauptabfrage anpassen können, um eine bestimmte Kategorie auszuschließen. Sie müssen die Kategorie-ID kennen, um diese Methode anzuwenden.
function exclude_category_home( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( 'category__not_in', array( 42 ) ); // Ersetzen Sie 42 durch die ID Ihrer Kategorie
}
}
add_action( 'pre_get_posts', 'exclude_category_home' );
Erklärung des Codes:
- Die Funktion `exclude_category_home` wird definiert, um die Hauptabfrage zu ändern.
- `$query->is_home()` prüft, ob es sich um die Startseite handelt.
- `$query->is_main_query()` prüft, ob es sich um die Hauptabfrage handelt (um andere Abfragen nicht zu beeinträchtigen).
- `$query->set( ‘category__not_in’, array( 42 ) )` legt fest, dass die Kategorie mit der ID 42 von der Abfrage ausgeschlossen wird. Ersetzen Sie `42` durch die tatsächliche ID der Kategorie, die Sie ausschließen möchten.
- `add_action( ‘pre_get_posts’, ‘exclude_category_home’ )` hängt die Funktion an den `pre_get_posts` Hook an, der vor der Ausführung der Abfrage aufgerufen wird.
Wichtig: Bevor Sie Code direkt in die `functions.php` Datei Ihres Themes einfügen, sollten Sie ein Child-Theme erstellen. Dadurch wird verhindert, dass Ihre Änderungen beim nächsten Theme-Update überschrieben werden. Alternativ können Sie ein Code-Snippet Plugin verwenden, um den Code sicher und ohne Theme-Änderungen hinzuzufügen.
Methode 2: Verwendung von Plugins
Für Benutzer, die keine Code-Änderungen vornehmen möchten, gibt es eine Vielzahl von WordPress-Plugins, die das Ausschließen von Kategorien von der Startseite erleichtern. Diese Plugins bieten oft eine benutzerfreundliche Oberfläche, in der Sie einfach die Kategorien auswählen können, die Sie ausschließen möchten. Hier sind einige beliebte Optionen:
- Exclude Categories From Homepage: Ein einfaches Plugin, das genau das tut, was der Name verspricht. Es bietet eine einfache Option im Backend, um Kategorien von der Startseite auszuschließen.
- Ultimate Category Excluder: Ein leistungsstärkeres Plugin, das mehr Optionen bietet, z. B. das Ausschließen von Kategorien von Archiven, Feeds und mehr.
- Custom Post Types UI: Obwohl dieses Plugin hauptsächlich zum Erstellen benutzerdefinierter Post-Typen dient, kann es auch verwendet werden, um Kategorien und Taxonomien auf detailliertere Weise zu verwalten, einschließlich des Ausschließens von bestimmten Bereichen der Webseite.
Die Verwendung eines Plugins ist in der Regel einfacher und schneller als das manuelle Bearbeiten von Code. Allerdings sollten Sie darauf achten, nur vertrauenswürdige Plugins zu installieren, die regelmäßig aktualisiert werden, um Sicherheitsrisiken zu vermeiden.
Methode 3: Manuelle Anpassung der Template-Datei (fortgeschritten)
Eine fortgeschrittenere Methode ist die direkte Bearbeitung der Template-Datei, die für die Anzeige der Startseite verantwortlich ist. Diese Methode erfordert jedoch gute Kenntnisse in PHP und WordPress-Template-Struktur. Die Template-Datei, die Sie bearbeiten müssen, hängt von Ihrem Theme ab. Häufig verwendete Dateien sind `index.php`, `home.php` oder `front-page.php` im Theme-Ordner.
Innerhalb der Template-Datei können Sie die WordPress-Loop (die Schleife, die die Beiträge anzeigt) anpassen, um bestimmte Kategorien auszuschließen. Dies erfordert das Hinzufügen einer Bedingung innerhalb der Schleife, die prüft, ob der aktuelle Beitrag zu einer ausgeschlossenen Kategorie gehört.
Beispiel:
<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// Kategorie-ID(s) zum Ausschließen
$excluded_categories = array( 42, 43 );
// Überprüfen, ob der Beitrag zu einer der ausgeschlossenen Kategorien gehört
$post_categories = wp_get_post_categories( get_the_ID() );
$is_excluded = false;
foreach ( $post_categories as $category ) {
if ( in_array( $category, $excluded_categories ) ) {
$is_excluded = true;
break;
}
}
// Wenn der Beitrag nicht ausgeschlossen ist, anzeigen
if ( ! $is_excluded ) {
get_template_part( 'template-parts/content', get_post_format() ); // Anzeige des Beitrags
}
endwhile;
else :
get_template_part( 'template-parts/content', 'none' );
endif;
?>
Erklärung des Codes:
- Der Code beginnt mit der Standard-WordPress-Loop (`if ( have_posts() ) : … endif;`).
- `$excluded_categories = array( 42, 43 );` definiert ein Array mit den IDs der Kategorien, die ausgeschlossen werden sollen. Passen Sie diese Liste entsprechend Ihren Bedürfnissen an.
- `wp_get_post_categories( get_the_ID() )` ruft die Kategorien des aktuellen Beitrags ab.
- Eine Schleife durchläuft die Kategorien des Beitrags und prüft, ob eine der Kategorien in der `$excluded_categories` Liste enthalten ist.
- Wenn der Beitrag zu einer ausgeschlossenen Kategorie gehört, wird die Variable `$is_excluded` auf `true` gesetzt.
- Schließlich wird der Beitrag nur dann angezeigt (`get_template_part( ‘template-parts/content’, get_post_format() )`), wenn `$is_excluded` auf `false` steht.
Wichtig: Diese Methode ist sehr theme-spezifisch und erfordert ein gutes Verständnis der WordPress-Template-Hierarchie. Sichern Sie Ihre Template-Dateien, bevor Sie Änderungen vornehmen, damit Sie bei Problemen eine funktionierende Version wiederherstellen können. Wie bereits erwähnt, ist die Verwendung eines Child-Themes unerlässlich, um Ihre Änderungen vor Theme-Updates zu schützen.
Methode 4: Einsatz von Conditional Tags
WordPress bietet sogenannte “Conditional Tags”, mit denen Sie prüfen können, ob bestimmte Bedingungen erfüllt sind, bevor Sie Code ausführen. Sie können diese Tags verwenden, um den Code zum Anzeigen von Beiträgen auf der Startseite zu steuern und so bestimmte Kategorien auszuschließen.
Ein Beispiel, wie Sie den `in_category()` Conditional Tag verwenden können:
<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
if ( ! in_category( array( 42, 43 ) ) ) { // Kategorien mit den IDs 42 und 43 ausschließen
get_template_part( 'template-parts/content', get_post_format() );
}
endwhile;
endif;
?>
Erklärung des Codes:
- Der Code verwendet die Standard-WordPress-Loop.
- `in_category( array( 42, 43 ) )` prüft, ob der aktuelle Beitrag zu einer der Kategorien mit den IDs 42 oder 43 gehört.
- Das `!` vor `in_category()` kehrt das Ergebnis um, so dass der Codeblock nur ausgeführt wird, wenn der Beitrag nicht zu einer der angegebenen Kategorien gehört.
- `get_template_part( ‘template-parts/content’, get_post_format() )` zeigt den Beitrag an, wenn er nicht zu einer der ausgeschlossenen Kategorien gehört.
Diese Methode ist etwas einfacher als die vorherige, da sie den `in_category()` Tag verwendet, um die Überprüfung durchzuführen. Auch hier gilt: Sichern Sie Ihre Template-Dateien und verwenden Sie ein Child-Theme.
Fazit: Die richtige Methode für Ihre Bedürfnisse
Das Ausschließen von Kategorien von der WordPress-Startseite ist eine wichtige Technik, um die Inhalte Ihrer Webseite zu steuern und die Benutzererfahrung zu verbessern. Die beste Methode hängt von Ihren technischen Fähigkeiten und den spezifischen Anforderungen Ihrer Webseite ab. Für Anfänger ist die Verwendung eines Plugins oft die einfachste Lösung. Benutzer mit etwas mehr Erfahrung können die Hauptabfrage über die `functions.php` Datei anpassen. Fortgeschrittene Benutzer können die Template-Dateien direkt bearbeiten oder Conditional Tags verwenden, um die Inhalte detaillierter zu steuern.
Unabhängig für welche Methode Sie sich entscheiden, ist es wichtig, Ihre Änderungen sorgfältig zu testen und sicherzustellen, dass sie keine unerwünschten Auswirkungen auf andere Bereiche Ihrer Webseite haben. Denken Sie immer daran, ein Backup Ihrer Webseite zu erstellen, bevor Sie größere Änderungen vornehmen, und verwenden Sie ein Child-Theme, um Ihre Anpassungen vor Theme-Updates zu schützen. Mit den richtigen Kenntnissen und Werkzeugen können Sie Ihre WordPress-Startseite optimal gestalten und Ihren Besuchern ein optimales Benutzererlebnis bieten.
