Weiterblättern auf der statischen Seite oder Sidebar

Loop Beispiele WordPress
Loop in WordPress

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('&laquo; &auml;ltere Artikel') ?></div>
  <div class="alignright"><?php previous_posts_link('neuere Artikel &raquo;') ?></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;?>

Fragen dazu?

Weitersagen gerne erlaubt. Wars hilfreich freu ich mich über einen Link oder social Bookmark ;)
24

24 Beiträge zu “Weiterblättern auf der statischen Seite oder Sidebar

  1. Kommentar Autor
    Monika
    Kommentar

    Hallo 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

  2. Kommentar Autor
    mi-schi
    Kommentar

    Ja, ich habe ja eben deinen Loop genommen… Es wird eben kein Text durch die Blätterfunktion ausgegeben.
    Ich schreibe mal ins Forum meine Variante.

  3. Kommentar Autor
    mi-schi
    Kommentar

    Die Funktionen wurden nicht übernommen:

    next_posts_link('« ältere Artikel')
    und 
    previous_posts_link('neuere Artikel »')
    
  4. Kommentar Autor
    Lars
    Kommentar

    Das klappt super toll,danke vielmals!!!
    Nur leider funktioniert mit diesem Loop meine Sidebar Navigation nicht mehr….
    Ich verwende diese Navigation:

    
    post_parent)
    
      $children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0");
      else
      $children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
      if ($children) { ?>
    
    

    Könnt Ihr mir dabei vielleicht helfen?
    Vielen Dank im voraus.

  5. Kommentar Autor
    Frageantwort
    Kommentar

    Hallo 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…

  6. Kommentar Autor
    Monika
    Kommentar

    hi 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

  7. Kommentar Autor
    Frageantwort
    Kommentar

    Hi 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

  8. Kommentar Autor
    Ben
    Kommentar

    leider klappt es bei mir nicht :-(

    er blättert nicht weiter kann es am plugin von lechnester liegen?

  9. Kommentar Autor
    Monika
    Kommentar

    hmm 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

  10. Kommentar Autor
    Hassel
    Kommentar

    klappt super, aber eine Frage noch, wie kann ich die Ausgaben alphabetisch sortieren?

  11. Kommentar Autor
    Monika
    Kommentar

    Hi Hassel orderby=title zu den Parametern dazugeben und dann das & nicht vergessen ..

  12. Ping 20 Tipps zu den statischen Seiten in WordPress

  13. Kommentar Autor
    matzespens
    Kommentar

    Klasse. Einfach perfekt. Das habe ich die ganze Zeit gesucht. Funktioniert prima.

    Vielen vielen Dank.

    Grüße

    Matze

  14. Kommentar Autor
    matzespens
    Kommentar

    Da 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

  15. Kommentar Autor
    Monika
    Kommentar

    ja dazu brauchst ein Plugin

    ich nutze gern Page Numbers

    da gibts viele fertige Designs und man kanns auch einfach selbst gestalten

  16. Kommentar Autor
    matzespens
    Kommentar

    Sehr gutes und einfach zu händelndes Plugin. Super. Jetzt ist es wirklich perfekt.

  17. Ping Das Geheimnis der WP Template Hierarchie – Template Sheet zum Ausdrucken

  18. Kommentar Autor
    postu
    Kommentar

    Hallo,

    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?

  19. Kommentar Autor
    Monika
    Kommentar

    srvus 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

  20. Kommentar Autor
    postu
    Kommentar

    aber 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…

  21. Kommentar Autor
    Mandy
    Kommentar

    Hi Monika,
    ich hab noch mal eine Frage zu diesem Code, den ich im „PostperPage“ Template verwende. (Hatte ich hier gepostet:

    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!

  22. Kommentar Autor
    Monika
    Kommentar

    Hi 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.