Beiträge einer bestimmten Kategorie auf einer WordPress-Webseite nicht in der Beitragsübersicht (Archive) anzeigen
Möglicherweise möchtest du auch in bestimmten Fällen Beiträge einer bestimmten Kategorie auf einer WordPress-Webseite veröffentlichen, aber nicht in der Beitragsübersicht (Archive) anzeigen. Das kann man einfach über eine kleine Funktion in der functions.php erledigen. Alternativ funktioniert das auch über das Plugin Ultimate Category Excluder.
Diesen Fall hatten wir auf einer Webseite von uns: Den Beitrag zu einem Vortrag wollten wir veröffentlichen, damit sich Teilnehmer beim Vortrag diesen Beitrag ansehen können. Aber der Beitrag sollte nach dem Vortrag noch weiter überarbeitet werden. Daher sollte der Beitrag erst mal nicht in der Übersicht (Archive) erscheinen.
Normalerweise kann man Beiträge, die noch nicht veröffentlicht werden sollen, als Entwurf speichern. Wenn du allerdings den Beitrag lediglich in der Beitragsübersicht aus welchen Gründen auch immer nicht zeigen möchtest, dann kommen wir mit dieser Lösung nicht weiter.
Die Funktion für den Ausschluss einer Kategorie oder eines Beitrags
Grundlage für diesen Beitrag hier war die folgende Dokumentation zu WordPress zum Hook pre_get_posts
.
Wenn du ein Child Theme verwendest, kann man die nachfolgende Funktion in die functions.php
des Child Themes einfügen. Falls du kein Child Theme nutzt, sollte das mit dem Plugin Code Snippets funktionieren, bei dem man den Code als neues Snippet hinzufügt.
Dazu habe ich zunächst eine neue Kategorie „Keine Anzeige“ erstellt. Für die Funktion brauchen wir allerdings die ID der Kategorie. Diese ID kann man herausbekommen, wenn man im Dashboard mit dem Cursor auf Bearbeiten „stehen“ (Hover) bleibt. Dann sieht man unten links (gelb markiert im Screenshot) die ID. In unserem Fall ist das die ID „1486“:
Und hier die entsprechende Funktion, die man dafür nutzen kann. In dem u. g. Code ist übrigens als Kommentar markiert, wie man alternativ auch einzelne Beiträge ausschließen kann. Verwendet wird der Hook pre_get_posts:
function exclude_single_posts_home($query) {
if ( $query->is_home() && $query->is_main_query() ) {
/* zeigt einen bestimmten Beitrag nicht: */
/* $query->set( 'post__not_in', array(6873) ); */
/* zeigt eine bestimmte Kategorie (in dem Fall "Keine Anzeige" nicht an) */
$query->set('cat', '-1486');
}
}
add_action( 'pre_get_posts', 'exclude_single_posts_home' );
Update
24.1.2023: Wenn man bei einem entsprechenden Beitrag aber noch eine andere Kategorie vergibt (z. B. „WordPress“, dann wird dieser Beitrag allerdings bei der Übersicht zu „WordPress“ gezeigt. Insofern ist das noch keine optimale Lösung. Das Problem taucht auch bei der Suche auf.
Offensichtlich ist die folgende Lösung daher besser:
function exclude_category_posts($query) {
if (( $query->is_home() && $query->is_main_query()) || ($query->is_archive && !is_admin()) || (is_search())) {
$query->set('cat', '-1486');
/* Zählt die gefundenen Beiträge (nur zum debuggen - hier als Kommentar)
$post_count = $GLOBALS['wp_query']->found_posts;
echo "Total posts: " . $post_count; */
}
}
add_action( 'pre_get_posts', 'exclude_category_posts' );
Kategorie im Block „Neueste Beiträge“ ausschließen
Wenn du zusätzlich auch den Block „Neueste Beiträge“ auf einer Seite (z. B. der Startseite) verwenden möchtest, kann man durch Nennung der entsprechenden Kategorien dafür sorgen, dass nur bestimmte Beiträge gezeigt werden. Angenommen, die Beiträge auf der Seite, die gezeigt werden sollen, haben die Kategorie „WordPress“. Dann nennt man in der entsprechenden Eigenschaft auch nur diese Kategorie. Die Kategorie „Keine Anzeige“ würde man in dem Fall an der Stelle nicht notieren:
Kategorien ausschließen über das Plugin Ultimate Category Excluder
Wem das alles zu technisch ist, der kann das auch über ein Plugin erledigen: Ultimate Category Excluder, abgekürzt als UCE, ist ein WordPress-Plugin, mit dem man Kategorien von der Startseite, Archiven, Feeds und Suchen ausschließen kann. Wir haben das Plugin auf einer WordPress-Instanz im Einsatz und da funktioniert das Plugin einwandfrei. Mit dem Plugin hat man noch mehr Einstellungsmöglichkeiten als über die o. g. Funktion:
Fazit
Auf diese relativ einfache Art kann man über den genannten Hook erreichen, dass bestimmte Beiträge in der Übersicht (Archive) nicht angezeigt werden. Wenn man kein Child Theme verwendet, kann man diese Funktion auch über das Plugin Ultimate Category Excluder mit noch mehr Einstellungsmöglichkeiten nutzen.
Mehr erfahren auf dieser Webseite
Wir freuen uns über eine Kontaktaufnahme
Was hältst du davon?
Wir hoffen, dieser Beitrag hat dir gefallen und wir würden uns über einen Kommentar freuen. Auch über Erweiterungen, Korrekturen, Hinweise oder sonstige Anmerkungen freuen wir uns sehr.
- Auf der folgenden Seite findest du weitere interessante Beiträge sortiert nach Kategorien und Schlagwörtern.
- Wenn du über unsere neuesten Beiträge informiert werden möchtest, kannst du dich gerne bei unserem Newsletter anmelden.
Schreibe einen Kommentar