- WP Loop

Vitaly hat eine Frage: Auf der statischen Seite sollen 10 Artikel angezeigt werden und es sollte dann auch den Link “vorherige Beiträge” und “nächste Beiträge” geben. Es soll also das Weiterblättern möglich sein.
Erklärung für PHP Neulinge:
Der Loop von WordPress holt aus der Datenbank Artikel mit allem was dazugehört. In den Tiefen der WP Dateien ist irgendwo definiert, dass es dabei eine “Weiterblättern” Funktion geben sollte und man kann im Admincenter festlegen nach wievielen Artikel diese WP anzeigt.
Mag man jetzt einen eigenen Loop haben, weil man z.B.: auf einer statischen Seite/ oder in der Sidebar Artikel anzeigen mag, die WP sonst nur auf der Startseite anzeigt, muß man WP diese “Weiterblättern” Funktion auch neu angeben.
Man braucht also temporär (zeitlich und örtlich begrenzt) etwas Neues.
Erklärung für PHP Versteher:
Next_posts_link und previous_posts_link nutzen wie vieles andere auch die globale Variabel $wp_query und die ist ein WP_Query object. Definiert man seinen eigenen wp_query hat man diese globale Variable $wp_query eben nicht mehr automatisch dabei und muß sie temporär neu angeben.
Beispiel für einen benutzerdefinierten Loop mit Weiterblättern
Aus der Kategorie mit der ID 16 sollen 3 Artikeln angezeigt werden, gibt es mehr als 3 Artikeln, soll man den “ältere Artikel”-”neuere Artikel” Link sehen.
Und es ist völlig egal, ob dieser Loop in der Sidebar, vor einem normalen Loop, nach einem normalen Loop oder auf einer statischen Seite steht. Laut meinen Test funktioniert er immer.
<?php $temp = $wp_query; $wp_query= null; $wp_query = new WP_Query(); $wp_query->query('cat=16&showposts=3'.'&paged='.$paged); ?> <?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?> Die Ausgabe der Artikel <?php endwhile; ?> <div class="navigation"> <div class="alignleft"><?php next_posts_link('« ältere Artikel') ?></div> <div class="alignright"><?php previous_posts_link('neuere Artikel »') ?></div> </div> <?php $wp_query = null; $wp_query = $temp;?>
Erklärung zum Code
Mit
$temp = $wp_query; $wp_query= null;
sagt man zu WP: Du liebes WordPress, ich nutz jetzt diese globale Variable ($wp_query) mal eine zeitlang ($temp) so wie ich es will ($wp_query null) (und nicht wie von den WP Programmiern vorgegeben)
Man reißt also kurzfristig die Macht über eine wichtige Variable an sich.
Damit WordPress nachher wieder wie gewohnt seinen Dienst macht, muß man ihm diese Macht über diese $wp_query Variable wieder zurückgeben.
Dies geht damit:
<?php $wp_query = null; $wp_query = $temp;?>
Birgit
27.08.08 um 23:08Hat super geholfen, vielen Dank!
mi-schi
12.09.08 um 21:32Hi,
leider funktionieren die Funktionen
nicht. Aber wenigstens ist deine Anleitung besser, als das was auf wordpress.org steht. Woran kann das bei mir liegen:
http://forum.wordpress-deutschland.org/plugins-und-widgets/39517-kategorien-auf-statischer-seite-anzeigen-mit-inhaltsverzeichnis.html
texto
12.09.08 um 22:09Hallo mi-schi
weil Dein dort vorgestellter Loop nicht derselbe ist, den ich da habe,
übernimm mal das was da oben steht.
die beste Erfahrung machte ich , wenn man dann bei einem erzeugten Auruf immer diese Art von Loop nimmt.
also die statische Seite hat ja meist auch eine Sidebar, ist in der auch ein Loop, dann sollte er nach denselben Muster gehen wie der oben hier.
lg
mi-schi
12.09.08 um 22:20Ja, ich habe ja eben deinen Loop genommen… Es wird eben kein Text durch die Blätterfunktion ausgegeben.
Ich schreibe mal ins Forum meine Variante.
mi-schi
12.09.08 um 21:33Die Funktionen wurden nicht übernommen:
Lars
18.09.08 um 16:53Das klappt super toll,danke vielmals!!!
Nur leider funktioniert mit diesem Loop meine Sidebar Navigation nicht mehr….
Ich verwende diese Navigation:
Könnt Ihr mir dabei vielleicht helfen?
Vielen Dank im voraus.
Frageantwort
02.11.08 um 17:01Hallo Texto,
dieser Blätter-Code hat bei absolut super geklappt, damit hab ich ein mittleres Problem weniger. Stoße übrigens bei fast jeder Frage auf diese Seite, sehr hilfreich. Jetzt fehlt mir nur noch diese dämliche Widget-Anzeige…
texto
02.11.08 um 17:43hi das liegt mit großer Sicherheit an dem doch etwas arg kreativem html nehm ich an -gib da die URL der Domain ein und Du wirst fündig
lg
Frageantwort
02.11.08 um 20:31Hi Texto,
uups, danke für den Tipp, hab es grad valide gemacht, Problem besteht aber immer noch, werde also weiter recherchieren müssen…
Danke und LG
Ben
11.05.09 um 14:46leider klappt es bei mir nicht
er blättert nicht weiter kann es am plugin von lechnester liegen?
texto
11.05.09 um 16:06hmm an wessen Plugin es liegt weiß ich nicht, deaktiviere dieses und schau nach–gibt es überhaupt was zum Weiterblättern,also sind genug Artikel da?
ich kenne viele Plugins, doch derartige Inkompatibilitäten sind mir noch nicht untergekommen
lg
Hassel
15.06.09 um 18:03klappt super, aber eine Frage noch, wie kann ich die Ausgaben alphabetisch sortieren?
texto
15.06.09 um 20:03Hi Hassel orderby=title zu den Parametern dazugeben und dann das & nicht vergessen ..
matzespens
27.10.09 um 12:24Klasse. Einfach perfekt. Das habe ich die ganze Zeit gesucht. Funktioniert prima.
Vielen vielen Dank.
Grüße
Matze
matzespens
27.10.09 um 13:18Da fällt mir nun doch noch was ein….
Gibt es eine Möglichkeit sich neben den Links für weiter und zurück die Seitenzahlen anzeigen zu lassen.
Grüße
Matze
texto
27.10.09 um 20:06ja dazu brauchst ein Plugin
ich nutze gern Page Numbers
da gibts viele fertige Designs und man kanns auch einfach selbst gestalten
matzespens
28.10.09 um 14:29Sehr gutes und einfach zu händelndes Plugin. Super. Jetzt ist es wirklich perfekt.
postu
16.12.09 um 22:22Hallo,
ich glaub ich hab das selbe Problem, jedenfalls wird bei mir gar kein Link zum Blättern mehr angezeigt, wenn ich vorher über die Sidebar eine bestimmte Kategorie anzeigen lasse. Suchergebnisse werden schön aufgelistet, aber ich kann nicht blättern.
Leider hab ich gar keine Ahnung von PHP und weiß nicht so recht, wo ich deinen Code einfügen soll? Und ist der überhaupt kopierfertig?
texto
16.12.09 um 22:31srvus postu na anpassen müßtst du ihn,
also den Namen der Cat eintragen wieviele Artikel angezeigt werden sollen
lies dir den Code laut vor und sprich die Abkürzungen aus, dann ist es verständlicher was das alles macht
einfach probieren..vorher die Originalsidebar sichern und bei Widgets brauchst das Plugin ExecPHP
postu
16.12.09 um 22:50aber wenn ich da jetzt ne Kategorienr. eintrage ist das doch gar nicht für alle meine Kategorien gültig? In meiner Sidebar (nicht widgetfähig) werden nur die Cats alle aufgelistet. Und wenn ich da eine von anklicke, kann ich nicht blättern. So meinte ich das…
Mandy
03.01.10 um 00:26Hi Monika,
ich hab noch mal eine Frage zu diesem Code, den ich im “PostperPage” Template verwende. (Hatte ich hier gepostet: http://wordpress.org/support/topic/342063?replies=1)
In diesem Template wird zuerst die Seite abgefragt und die dazugehörige Kategorie festgelegt:
“… if (is_page(’21′) ) {
$cat = array(12); …”
Wie kann ich in deinem Loop diese Variable übergeben?
“$wp_query->query(‘cat=5&showposts=5′.’&paged=’.$paged);” => Ich hab’s mit “cat=$cat” versucht, aber ohne Erfolg (bin kein PHP profi
Danke für deine Hilfe!
texto
05.01.10 um 10:12Hi Mandy
mache zuerst die Abfrage welche Seite if is page 12, dann nimm meinen Loop von oben und statt cat =5 cat=12 eintragen, das funktioniert bei mir einwandfrei – wobei ich da lieber eigne Templates für die Anzeige der Kategorien auf einer statische Seite nehme, dann erspar ich mir die Abfrage welche Seite es ist.