Beiträge einer Kategorie nicht in der Startseite, sondern andere Seite anzeigen
-
WordPress: 6.0.2
Theme: Child-Theme von Twenty Twenty-TwoIst es mit WordPress-Boardmitteln möglich,
Beiträge, die einer bestimmten Kategorie zugeordnet sind,
nicht auf der Startseite
sondern auf einer anderen WordPress-Seite von mir
auszugeben?
-
Ja, das geht.
Achso, falls du wissen möchtest, wie das geht:
Child-Theme anlegen und in der
functions.php
folgenden Code verwenden:function exclude_category( $query ) { if ( $query->is_home() && $query->is_main_query() ) { $query->set( 'cat', '-42' ); } } add_action( 'pre_get_posts', 'exclude_category' );
wobei
42
die ID der Kategorie ist, die hier ausgeschlossen wird.Solltest du mit „Bordmitteln“ nur Einstellungen im Customizer gemeint haben (kein eigener Code in einem Child-Theme oder [eigenem] Plugin), geht es nicht.
@pixolin, entschuldige die unklare Frage, ich hätte mit „wie“ fragen sollen. Ich wußte jedoch nicht, ob es möglich ist oder nicht. Mit diesem Aktion-Hook schalte ich eine bestimmte Kategorie aus, super, hierfür Danke ich Dir.
Soll ich für folgende Frage einen neuen Thread eröffnen oder hier bleiben?
Frage:
Wie kann ich über den Beta-Template-Editor mir eine Seite erstellen, in der nur Beiträge einer bestimmten Kategorie angezeigt werden?Das ist bisher nicht vorgesehen.
Du kannst …
- in Design > Editor das Template für die Startseite auswählen
- Über das Listenansicht-Ikon (1) den Abfrage-Loop-Block auswählen (2) und dort die Übernahme der Abfrage aus dem Template deaktivieren (3).
Etwas weiter unten in der Sidebar kannst du dann einen Filter einstellen, indem du nur bestimmte Kategorien (oder Schlagwörter, Autoren) auswählst (4), aber du kannst hier keine Kategorien ausschließen.
Wenn du nur mit Beiträge in drei Kategorien arbeitest, kannst du hier zwei Katagorien eintragen und hast damit die dritte Kategorie ausgeschlossen. Sobald du aber weitere Kategorien erstellst, musst du jeweils nachbessern, was eine unbefriedigende und fehleranfällige Lösung ist.
Ich würde für den o.g. Code einfach ein Plugin erstellen:
<?php /* * Plugin Name: ohne42 * Description: Kategorie 42 von der Startseite ausschließen */ function exclude_category( $query ) { if ( $query->is_home() && $query->is_main_query() ) { $query->set( 'cat', '-42' ); } } add_action( 'pre_get_posts', 'exclude_category' );
Auf deinem Computer in einem Verzeichnis
ohne42
speichern alsohne42.php
, Verzeichnis alsohne42.zip
komprimieren, anschließend in WordPress Plugins > Installieren > Plugins hochladen >ohne42.zip
hochladen und aktivieren.Danke Dir @pixolin,
ein Plugin zu erstellen, sehe ich mich von meinem Wissenstand her derzeit außerstande. Aber vielleicht gibt es ja ein Plugin, das dass bereitstellt?Derzeit versuche ich Dein Code-Snippet
function exclude_category( $query ) { if ( $query->is_home() && $query->is_main_query() ) { $query->set( 'cat', '-8' ); } } add_action( 'pre_get_posts', 'exclude_category' );
zu verstehen und umzusetzen. Es klappt irgendwie nicht. Die ID habe ich aus der Tabelle terms.term_id ermittelt. Ist das korrekt?
Du kannst …
in Design > Editor das Template für die Startseite auswählen
Über das Listenansicht-Ikon (1) den Abfrage-Loop-Block auswählen (2) und dort die Übernahme der Abfrage aus dem Template deaktivieren (3)…Das werde ich versuchen nachzuvollziehen, Danke.
ein Plugin zu erstellen, sehe ich mich von meinem Wissenstand her derzeit außerstande.
Echt jetzt? Du weißt doch, wie man auf einem Computer ein Verzeichnis erstellt und Text mit Copy/Paste in eine Datei zu kopieren ist auch Computer-Wissen für Einsteigerkurse bei der VHS.
Einfacher konnte ich es nicht erklären.
Hier das Plugin komplett: https://github.com/pixolin/withoutcat42
Aber vielleicht gibt es ja ein Plugin, das dass bereitstellt?
Ganz bestimmt.
https://de.wordpress.org/plugins/search/exclude+category/
Die ID habe ich aus der Tabelle terms.term_id ermittelt. Ist das korrekt?
Viel zu kompliziert. Du brauchst nur mit der Maus über die Kategorie fahren und kannst die ID in der Statusleiste auslesen. In diesem Fall hat die Kategorie
dontshow
eine ID21
:`ein Plugin zu erstellen, sehe ich mich von meinem Wissenstand her derzeit außerstande.
Echt jetzt? Du weißt doch, wie man auf einem Computer ein Verzeichnis erstellt und Text mit Copy/Paste in eine Datei zu kopieren ist auch Computer-Wissen für Einsteigerkurse bei der VHS.
Einfacher konnte ich es nicht erklären.Manchmal denke ich komplizierter als es ist und stehe mir selber im Wege, da hilft dann auch kein VHS-Kurs, aber pixolin hilft :-)) Danke! Werde ich umsetzen.
Zum Punkt: Beiträge einer Kategorie auf einer anderen Seite anzeigen
Dein VorschlagDu kannst …
in Design > Editor das Template für die Startseite auswählen
Über das Listenansicht-Ikon (1) den Abfrage-Loop-Block auswählen (2) und dort die Übernahme der Abfrage aus dem Template deaktivieren (3).war Ideengeber für folgende Lösungsmöglichgkeit:
1. Neue Seite erstellen.
2. Dort einen Block „Abfrage-Loop“ zuordnen.
3. Dann eine Vorlage zuordnen.
3. Block-Einstellungen > Filter > die Kategorie auswählen, deren Beiträge man auf dieser Seite angezeigt haben will.Vielen Dank @pixolin, das klappt!!!
Neue Seite erstellen. Dort einen Block „Abfrage-Loop“ zuordnen. …
… geht, ist aber nicht ideal für die Performance, weil WordPress mit Aufruf der Webseite bereits eine Datenbankabfrage auslöst, um dann auf der Webseite eine neue Datenbankabfrage vorgesetzt zu bekommen. 🙂
Die Funktion verwendet einen Hook (eine Schnittstelle)
pre_get_posts
, was umgangssprachlich als „bevor du überhaupt anfängst, eine Abfrage zu machen …“ übersetzen könnte. Mit der Funktion teilst du WordPress dann mit, dass du die Kategorie XY in dieser Abfrage nicht ausgeben möchtest. Erspart dir eine weitere Abfrage und ist deshalb performanter. 🤓um Beiträge einer bestimmten Kategorie in dem Abfrage-Loop meiner Startseite nicht mehr anzuzeigen, gehe ich wie von Dir mit
pre_get_posts
vorgeschlagen vor (mit Deinem Plugin).Wie kann ich über den Beta-Template-Editor mir eine Seite erstellen, in der nur Beiträge einer bestimmten Kategorie angezeigt werden?
Das ist bisher nicht vorgesehen.Man kann zwar über den Design-Editor ein neues Templates > hinzufügen. Jedoch weder umbenennen noch einer Seite oder einem Beitrag zuordnen – warum auch immer.
Aber wie könnte ich nun, auf einer separaten Seite (nicht Startseite) nur die Beiträge anzeigen, die zu einer bestimmten Kategorie gehören?
Das Startseiten-Template filtern ginge ja nicht. Deshalb fiel mir nur dieser Lösungsweg ein, in dem zuerst der Seiteninhalt angezeigt wird und dann die Beiträge aus der Datenbank geholt werden, die einer bestimmten Kategorie zugehörig sind. Gäbe es vielleicht später mit neueren Versionen einen performanteren Weg?
Das Startseiten-Template filtern ginge ja nicht.
Warum? Das sollte einwandfrei funktionieren.
(Startseite filtern mitpre_get_posts
.)Aber wie könnte ich nun, auf einer separaten Seite (nicht Startseite) nur die Beiträge anzeigen, die zu einer bestimmten Kategorie gehören?
Je nach Permalinkeinstellungen sollte
https://example.com/category/starwars
die Beiträge der Kategoriestarwars
anzeigen. („Kategorie-Archiv“)Deshalb fiel mir nur dieser Lösungsweg ein, in dem zuerst der Seiteninhalt angezeigt wird und dann die Beiträge aus der Datenbank geholt werden, die einer bestimmten Kategorie zugehörig sind.
Dann hast du doch wieder die Beiträge einer bestimmten Kategorie auf der Startseite – nur in einer eigenen Loop? Das lässt sich tatsächlich nur mit einer zusätzlichen Datenbankabfrage lösen.
Ich sehe glaube ich den Wald vor lauter Bäumen nicht. Vermute mal wieder, dass es einfacher ist als ich denke.
Warum? Das sollte einwandfrei funktionieren.
Das tut es ja. Mein Problem war, die Beiträge, die ich auf meiner Startseite ausspare, auf einer separaten Seite auszugeben.
Wenn ich Dich richtig verstanden habe, ist Dein Lösungsvorschlag, ein Link auf das entsprechende Kategorie-Archiv. Puhh, noch ein Punkt zum Lernen, aber es macht Spaß.
Danke für Deine Geduld @pixolin
Hallo,
vielleicht ist auch noch der folgende Beitrag hilfreich, den ich vor einiger Zeit zu diesem Thema geschrieben habe.
Vermutlich hat aber Bego bereits alles das gesagt, was ich damals in dem Beitrag erwähnt habe.Viele Grüße
Hans-Gerd- Diese Antwort wurde geändert vor 2 Jahren, 2 Monaten von Hans-Gerd Gerhards.
- Das Thema „Beiträge einer Kategorie nicht in der Startseite, sondern andere Seite anzeigen“ ist für neue Antworten geschlossen.