Angefragt wurde ich, wie man es in WordPress schafft, dass man beim Aufrufen der statischen Seite X soundsoviele Beiträge aus der Kategorie Y angezeigt bekommt.
Als Vorbereitung für diese Lösung musst Du:
- Admincenter//Dashboard==>Seiten==>ID der Seite suchen und merken.
- Admincenter//Dashboard==>Artikel==>Kategorien==>ID der Kategorie suchen und merken.
In meinem Beispiel ist die ID der Seite 9.
Die ID der Kategorie ist 3.
Eingetragen habe ich es in meiner sidebar.php.
ein benutzerdefinierter Loop – beeinflusst der auch andere
Diese Lösung funktioniert vor dem normalen Loop und nach dem normalen Loop und wie immer habe ich eine sehr einfache Erklärung mit dabei.
Und ich kanns nicht oft genug erwähnen. Dieser Loop beeinflusst andere Loops nicht!
Direkt in die page.php kann man dies schreiben.
<?php if (is_page('9')) { // ID der gewünschten Seite ?> <?php global $post; $tmp_post = $post; $args = array( 'numberposts' => 6, 'offset'=> 3, 'category' => 6 ); $myposts = get_posts( $args ); foreach( $myposts as $post ) : setup_postdata($post); ?> <?php the_time(__('d.m.:')) ?><a href="<?php the_permalink() ?>" rel="bookmark" title=" <?php the_title(); ?>"><?php the_title(); ?></a>. <?php endforeach; $post = $tmp_post; ?> </ul> <?php } ?>
Erklärung:
<?php if (is_page('9')) { // ID der gewünschten Seite ?>
Das heißt ausgesprochen:
Wenn es die Seite mit der ID 9 ist, dann…
Das <ul> öffnet die ungeordnete Liste, in der ich die Beiträge anzeigen lassen mag => logisch kannst Du das ändern.
<?php global $post; $tmp_post = $post; $args = array( 'numberposts' => 6, 'offset'=> 3, 'category' => 6 ); $myposts = get_posts( $args ); foreach( $myposts as $post ) : setup_postdata($post); ?>
Meine Erklärungen sind meist sehr bildhaft
Liebes WordPress, du glaubst zwar jetzt gehts um eine Seite, doch ich gebe dir nun den Befehl zeige Artikel an,
und zwar 6 (numberposts), aber nicht die ersten 3 (offset) und zwar nur aus der Kategorie mit der ID 6.
Und hole alles was zu einem Artikel dazugehört aus der Datenbank raus (setup_postdata).
===> Du könntest also auch Autoren, benutzerdefinierte Felder etc anzeigen lassen.
Jetzt wird angegeben wie die Beiträge aussehen sollen:
<li><?php the_time(__('d.m.:')) ?><a href="<?php the_permalink() ?>" rel="bookmark" title=" <?php the_title(); ?>"><?php the_title(); ?></a>.</li>
Hier hast Du freie Wahl. Ich lasse zuerst das Datum anzeigen, dann nur den Link zum Beitrag.
Packe dann alles zwischen die <li> und </li>, damit die Liste richtig wird.
alles bis zum “more-tag”….
<?php global $more; $more = 0; the_content('Weiterlesen'); ?>
den Loop beenden – so damit er andere Loops nicht stört
<?php endforeach; $post = $tmp_post; ?>
Dies ist wichtig, damit WordPress weiß, es muss nicht mehr weiterarbeiten. (endforeach) und dies beendet den Loop komplett, sodass weitere Loops nicht von diesem beeinflusst werden ( $ post = $ tmp_post )
Abfrage, ob man auf der richtigen Seite ist mag auch beendet werden….
<?php } ?>
Schließt den ganzen Komplex, der mit if…. anfing.
Artikelhistorie:
Erstveröffentlichung: 01. März 2006 19:59
Update: 3.11.2011
Viel Spaß beim Ausprobieren.

Birgit
23.08.08 um 13:33Hi Monika,
das hat mir schon etwas geholfen
Allerdings werden bei mir dann die ganzen Artikel angezeigt, nicht nur ds bis zum more-tag. Weißt du vielleicht, warum?
LG Birgit
texto
23.08.08 um 21:19Hi wenn Du mehr als einen Link anzeigen magst, nimm dieses Tutorial
Artikel auf statischer Seite und weiterblättern
lg
Birgit
27.08.08 um 23:10Vielen lieben Dank Monika! Die verlinkte Lösung war genau das, was ich brauchte. Dein WP-Wissen ist echt beeindruckend
Kurikinton
27.03.09 um 18:12Das Script funktioniert so ganz gut nur gibt es einen kleinen Fehler: Der zeigt nur den letzten Beitrag in der Kategorie an. Ich hab “&numberposts=6&offset=3″ extra weg gelassen.
Woran kann das liegen? Danke!
texto
28.03.09 um 09:21numberposts sollte angegeben werden,damit gibst du die Anzahl der Artikel an,
offset 3 sagt nur die ersten 3 Artikel nicht,
sprich wenn es trotz dieser Angaben nur den letzten-also den neuesten anzeigt- ist irgendwo anders ein Fehler
lg
Dieter
14.07.09 um 22:10Super, schaue ich mir einmal an. Danke Dir
WH|T3H4T
10.11.09 um 18:16danke erstmal für das snippet, läuft ja ansich ganz gut … die artikel bestimmter cats werden auf den entsprechenden seiten angezeigt, nur … und jetzt mein problem … der ursprüngliche text der statischen seite verschwindet^^ … so hab jetzt zig versionen versucht und komme immer zu dem gleichen resultat: entweder statischer text, oder die artikel der category, aber nicht beides? …
jetzt beschleicht mich langsam der verdacht, das es nur die entweder-oder-lösung gibt? ich hoffe ich liege falsch und es ist möglich erst die artikel einer bstimmten category und dann den statischen text/inhalt auf einer seite auszugeben? …
texto
10.11.09 um 19:16schau dir die page.php Deines verwendeten Themes an
da steht irgendwann mal endif -gleich darunter gibst Du obigen Code oder den von hier
damit kannst Du besser mehrere Loops unterbringen
oder Du gibst den Code für die Kat-ArtikelAnzeige VOR if have post while have post in deiner page.php
ausprobieren
Eric
12.04.10 um 22:09Danke für den hilfreichen Artikel.
Hab mir damit ne tolle Startseite im Magazinformat gebastelt. Dort zeige ich aus den 4 Top Kategorien immer die 5 neuesten Beiträge an. Es gibt dazu zwar einige Themes, welche aber immer schwer zu durchschauen waren. So konnte ich mein eigenes Theme einfach anpassen
quasimodo
16.09.10 um 16:06Vielen Dank für diesen Hack. Er hat mir schon sehr viel weitergeholfen. Es gibt doch sicherlich noch die Möglichkeit WP, bzw. der statischen Seite mitzuteilen, dass die Artikel nur anreissen, also die More-Funktion beachten soll.
quasimodo
16.09.10 um 16:47Ich hab’s schon rausgefunden…. wie so oft hilft es nur schin, wenn man nach Hilfe fragt
. Vor Ende des li-Tags habe ich folgendes eingefügt:
Und damit beachtet WP auf der Unterseite den More-Tag eines Artikels.
Felix
08.11.11 um 11:30Eine Stunde Friemelarbeit (ich hatte eine Zeile übersehen und ewig rumprobiert, warum es nicht ging…) später funktioniert alles, wie es soll! Super Sache, danke für den Tipp.
Unabhängig davon auch nochmal vielen Dank dafür, dass du deine alten Einträge nochmal durchsuchst und aktualisierst!
texto
08.11.11 um 17:22freut mich, dass Du es schafftest Felix und
Danke für Deine Rückmeldung (!)
Stefan
25.11.11 um 14:28Hallo Monika,
danke für die bildhaften Erklärungen
Jetzt habe ich also meine Artikel auf der speziellen Seite – ABER: Sie zeigen alle im Browserkopf nur den Title der speziellen Seite, und nicht den den Title der einzelnen Artikelseite. Gibt es irgendeinen Befehl, den ich ins Template hineinschreiben muss, damit das klappt? (Sorry, wenn ich etwas übersehen habe.)
VG Stefan
texto
25.11.11 um 15:37hi Stefan
im Browserkopf steht immer nur der Titel der einen Seite, nie der Titel aller Artikel, die auf einer Seite angeführt werden
==> stell dir mal vor, da sind 200 Artikel verlinkt,
das wären 200 Title im Browser => das ergibt keinen Sinn
Stefan
25.11.11 um 15:43Huhu, danke für die schnelle Antwort! Wahrscheinlich habe ich mich etwas kryptisch ausgedrückt – die Seite, auf der die Artikel erscheinen, hat einen title. Der wird jetzt auf allen Artikel-Unterseiten angezeigt – statt der einzelnen titles der jeweiligen Artikel. Bestimmt gibt es eine Möglichkeit, das in der header.php anzupassen.
– habe ich mir mit einem SEO-Plugin beholfen. Trotzdem wäre es interessant, ob es händisch geht: Man will ja nicht 1000 Plugins im Auftritt herumfleuchen haben …
In der Zwischenzeit – man fragt, und schon fällt einem eine Lösung ein, wie bei Quasimodo oben auch
Danke dir!
texto
25.11.11 um 23:56da biste aber wirklich mit so einem SEO Plugin besser bedient,
sonst wirds für nicht phpler kryptisch Ende nie
Anna
30.11.11 um 13:30Hallo Monika,
ich versuche es gerade, nach Deiner Anleitung eine statische Seite zu basteln, auf der alle Beiträge einer Kategorie aufgelistet sind. Im großen und ganzen scheint es zu klappen, aber die Beiträge werden einfach nacheinander genannt (verlinkt), ich möchte sie aber gelistet haben. Kann es sein, dass in Deinem Code oben irgendwo das fehlt? Wenn ja, wo genau? Habe versucht, es an verschiedenen Stellen im Dokument einzufügen, komme aber zu keinem zufriedenstellenden Ergebnis
Anna
30.11.11 um 13:35Achso, es könnte eventuell wichtig sein: ich benutze das Theme “Twenty Ten”, da gibt es zwei extra Dateien für loops, vielleicht soll ich es dort einfügen?
texto
30.11.11 um 20:57gar keinen Loop von twenty ten,
da oben steht ein Loop in meinem Artikel, den musst nehmen,
die html Ausgabe musst Du anpassen,
je nachdem was du haben magst…
Daniel
15.12.11 um 07:21Guten Tag,
ich würde gerne auf meinem Blog genau das hier beschriebene durchführen („Statische Seite X zeigt Beiträge von Kategorie Y an“). Allerdings frage ich mich gerade ob das bei mir überhaupt möglich ist.
Denn ich nutze den Bloghosting-Dienst von WordPress. D.h. ich habe nichts extra auf meinem PC installiert sonder ich verwalte meinen Blog über eine Admin-Internetseite. Daher weiß ich nicht ob und wo ich auf die PHP-Seite für meinen Blog zugreifen kann.
Kann mir da jemand helfen?
Viele Grüße
Daniel
texto
19.12.11 um 01:14HI Daniel
du hast deinen Blog bei wordpress.com,
da wird dies so nicht funktionieren => weil Du eben keinen Zugang zum jeweiligen ThemeOrdner hast.
Daniel
19.12.11 um 11:58“da wird dies so nicht funktionieren”,
ok, habs fast befürchtet,
trotzdem vielen dank
Arthur
04.01.12 um 17:28Bei einem meiner Blogs hats geklappt, bei dem anderen leider nicht. Muss wohl an dem Theme liegen, aber das Theme von dem zweiten Blog ist auch echt sündhaft schlecht programmiert.
Hatte auch erst das selbe Problem wie Stefan, habe mich aber dann an den Rat von Monika gehalten und das Problem mit dem Plugin WordPress SEO beseitigt. Danke!
Tommy1424
04.01.12 um 17:45Hi, erstmal herzlichen Dank für die super Erklärung. Leider hab ich da jetzt noch ein Prob wo ich einfach nicht weiter komme. Muss aber zugeben, dass sich meine php-Kenntnisse sehr in Grenzen halten.
Also ich hab aus der page.php ein neues Seitentemplate erstellt. Den Code von oben reinkopiert und angepasst. Soweit alles super. Aber normalerweise kommen sämtliche Beiträge auf weißem Hintergrund bzw. in so einem Kästchen.
Nur auf der neu erstellten Seite, habe für den statischen Text das weiße Kästchen, die Artikel reihen sich nahtlos unten ohne Hintergrund an.
Was bzw wo hab ich da den Fehler drinn? Benutze das Graphene Theme.
Danke!
Tommy1424
05.01.12 um 14:53Danke! Das Problem hab ich vorerst behoben. Habe im neuen Seitentemplate statt obigen Code folgendes eingegeben:
statt cat=-0 hab ich die passende cat-id eingegeben. Jetzt hab ich zwar auf jeder Blogseite die selbe Anzahl an Artikel, aber fürs Erste sollte es so passen.
texto
05.01.12 um 21:07hi Tommy das liegt nicht an der Kategorie, die du dazu hernimmst, also der cat id sondern an dem html, das du an dein theme anpassen solltest,
ich kenne das deine leider nicht
Raphael
18.02.12 um 21:06Wunderbar, der Artikel hilft wirklich weiter. Ein kleines Problem gibt es noch, das im Artikel nicht angesprochen wird: Wenn ich genau so wie beschrieben verfahre, dann erscheint unter der Liste der Beiträge der erste Artikel. Ich will aber gar keinen Artikel, sondern nur die Liste. Wie muss ich denn dann den Code modifizieren?
Danke schon mal vorab!
Raphael
texto
25.02.12 um 09:56Raphael nur die Liste?
also nur die Aufzählung der Artikeltitel mit den Links dazu ?
wenn dies so stimmt, dann lass das weg :
Giede
28.02.12 um 17:44Hi, guter Artikel, vielen Dank! Fehlt denn in dem Beispiel nicht der öffnende ul-Tag?
Und kann ich die passenden Artikel z.B. nach Anfangsbuchstaben A, B, C sortieren lassen?
Jan
05.03.12 um 12:36Hmm kriege ich es damit auch irgendwie hin, dass alle Artikel ausgegeben werden, die ein bestimmtes Tag haben..?
texto
07.03.12 um 22:05ja Jan
statt
‘category’ => 6
‘tag’=>tag-slug
müßte funktionieren
texto
07.03.12 um 22:10@Giede ja fehlt,
hier habe ich eine sehr alte Lösung für die alphabetische Ordnung Artikel nach A-z ordnen.
Eventuell tät ich das heut mit einer Taxonomie lösen
henne
04.04.12 um 11:56Ich benutze das Presswork Template.
Hier gibt es leider keine Sidebar.php wo soll der Code dann hinein?
texto
05.04.12 um 13:29huch @henne da kann ich dir nicht helfen, weil ich das template nicht kenne
hat es eine Sidebar?
wenn ja muss dazu irgendwo ein template dazu vorhanden sein
oder die sidebar ist in der single.php mitdrin
leider kann ich dir da nicht mehr helfen, haben die wo Hilfe oder eine Dokumentation zu ihren Themes=> eventuell findest du da was
Alexander Ritter
23.04.12 um 17:35Hallo,
also bei mir funktioniert das nicht. Irgendetwas mache ich falsch. Ich habe mein Template mit Artisteer erstellt und habe in die page.php den Codeschnipsel eingetragen. Anwelcher Stelle muss er denn genau rein. Ich habe alle möglichen Stellen ausprobiert, aber es funktionierte leider nicht.
Dima
11.05.12 um 08:50Hallo,
wie bekomme ich es hin, dass ich nur die ersten 4 neue Artikel zu sehen bekomme und nicht wie du beschrieben hast die letzen 3…
Danke!
texto
12.05.12 um 20:33Hallo DIma
du änderst diese Zeile
so ab
hilft das weiter?
Dima | Matschhose
12.05.12 um 23:43Danke, hat funktioniert!
texto
14.05.12 um 12:33freu mich über die Rückmeldung Dima
ist selten