Beiträge auf der Startseite im Grid ausgeben

  • Guten Abend zusammen,
    ich möchte auf meiner Startseite den Auszug einiger Beiträge/News nebeneinander ausgeben. Das heißt:

    Headline
    Beitragsbild als Thumbnail
    Kategorie - Uhrzeit & Datum
    Auszug des Beitrags

    Und dann eben drei Beiträge nebeneinander. Das bekomme ich soweit mit Flexbox auch alles hin, allerdings weiß ich nicht, wie ich den Wordpress-Loop jetzt integrieren soll.

    Zwar habe ich diesen Code in den ersten Div-Container gepackt:

    PHP
    <?php query_posts('cat=3&showposts=1');
    while (have_posts()) : the_post();
    $link = get_permalink( );
    the_title('<h3><a href="'. $link.'">', '</a></h3>'); //Ausgabe der Headline mit Link
    the_post_thumbnail('thumbnail'); //Ausgabe des Vorschaubildes in Thumbnail-Größe 
    the_excerpt(); //Ausgabe Excerpt
    endwhile; ?>

    Aber dann weiß ich leider nicht, wie, ich innerhalb dieses PHP-Codes jetzt auch die einzelnen Bereiche stylen kann. Also mit HTML & CSS habe ich das alles schon hinbekommen, nur die Integration mittels Wordpress gelingt mir leider noch nicht so. Bei Google bin ich bislang gescheitert, vielleicht kann mir ja hier jemand weiterhelfen?

    Vielen Dank schon einmal!

    Beste Grüße,
    Marco

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Dein PHP ist dafür da, festzulegen, was WordPress in welcher Struktur ausgeben soll.
    Fürs Styling nimmst du CSS.

    Da ist display: flex schonmal ein sinnvoller Ansatz.

    Aus dem, was du schreibst, geht nicht wirklich hervor, was für einen Loop / was für Loops du brauchst.
    Statische Startseite? (Schreibst du nicht, ist aber mit deiner Query für 1 Post aus Kategorie 3 zu vermuten …)
    Was sollen für weitere Beiträge drauf? Egal welche Kategorie, die drei neuesten? Aus festgelegten Kategorien jeweils der neueste Beitrag? …? Anhand dessen schaust du, wie du das mit möglichst wenigen weiteren Loops abfragen kannst. Jeder weitere Loop braucht Rechenleistung. Und denk an wp_reset_postdata();

    Du hast also in der PHP-Datei zunächst einmal den Ursprungsloop (für die statische Startseite) bis zum endif. Dann öffnest du einen Container, div oder Section, mit sinnvoller Klasse oder ID, z.B. #beitragsbox. Innerhalb dieser Box kommt der / die weitere(n) Loop(s), der / die die Unterboxen für die Beiträge nach immer dem gleichen Schema ausgibt. Und diese Boxen stylest du mit CSS.

    Im Codex ist unter dem Stichwort Loop auch der Umgang mit multiplen Loops beschrieben.
    Zu fragen wäre, ob get_posts() nicht in vielen Fällen einfacher und sinnvoller ist.

    Gruß
    helix

  • Hallo helix,
    vielen Dank für deine Antwort! Mittlerweile hab ich es ganz gut gelöst bekommen, so wie ich es mir vorgestellt hatte. Dein Beitrag hat auf jeden Fall aber auch nochmal weitergeholfen. Auf der Seiten werden oben noch in einem Image-Grid drei weitere News angezeigt und unterhalb des hier angesprochenen Grids sollen noch ein paar weitere Beiträge posten - ähnlich eines Magazine-Themes. Die Ausgabe der Loops variiert dann entsprechend immer ein bisschen, also mal neben, mal untereinander.

    Das Thema mit [COLOR=#333333]wp_reset_postdata(); habe ich aber noch nicht so ganz verstanden. Kann man das mit clearfix vergleichen? Oder ist das zu weit hergeholt?

    Beste Grüße,
    Marco[/COLOR]

  • Oh, grins, das ist immer eine lustige Angelegenheit, Halbwissenden (also in dem Fall mir) Fragen zu stellen.

    Für die Ernsthaften und Wissenden: Neinneinneinnein, reset postdata und clear sind völlig unterschiedliche Baustellen und hat überhaupt nix miteinander zu tun.
    Für die Lernenden, sich-Herantastenden, Halbwissenden – solange du dir drüber klar bist, dass es einfach nur ein Vergleich ist: ja, so ähnlich.

    Normalerweise spielt sich der (one-and-only) WordPress-Loop so ab: if – while – the (post) – endwhile – endif
    Aber auch außerhalb dieses Loops geht WordPress bei Seiten und Beiträgen in der Single-Ansicht davon aus, dass es auf der Seite genau dieses einen Posts mit seiner festgelegten ID ist. Wenn du nun einen weiteren Loop beginnst, der durch einen oder mehrere andere Beiträge durchläuft, kann das Durcheinander geben. Welche ID ist jetzt die gültige? Mit wp_reset_postdata(); wird sozusagen das Staffelholz wieder an den Ursprungsbeitrag mit seiner ID zurückgegeben.

    Soweit ich das überblicke, ist es nicht schädlich, jeden weiteren Loop, sei es mit WP_Query sei es mit get_posts oder vergleichbarem mit reset_postdata abzuschließen, auch wenn es nicht in allen Fällen wirklich nötig ist.

    Gruß
    helix

  • Ach, ich finde, du machst das schon ganz gut mit dem Beantworten der Fragen. :smile:

    Ja, das war tatsächlich nur als grober Vergleich von mir gedacht. Hatte mir aber schon beim Verfassen des Beitrages überlegt, ob ich das so schreiben kann. :-D

    Okay, dann denke ich, dass ich das verstanden habe. Ist auch ganz gut so, die Frage wäre wahrscheinlich in den nächsten Tagen wohl sowieso aufgekommen. Ich werde das dann in den Loops direkt mal einbauen.

    Das Problem das ist jetzt aber aktuell noch habe ist, dass mit diesem Loop einfach nur der Textauszug 3x untereinander gesetzt wird, aber die restlichen Container nicht.

    Die Ausgabe die ich dann erhalte ist:
    Headline
    Thumbnail
    Kategorie - Datum
    Auszug
    Auszug
    Auszug

    Aber eben auch nur vom selben Beitrag. Zum einen werden die anderen Beiträge der Kategorie gar nicht berücksichtigt und zum anderen eben auch nicht nebeneinander. Und wenn ich das dann mit denselben Klassen nebeneinander löse wird ja leider auch immer nur derselbe eine Beitrag ausgegeben. Doch schwieriger als ich dachte. :?

    Beste Grüße,
    Marco

    Einmal editiert, zuletzt von marco563 (29. August 2017 um 12:46)

  • Ich würde es mal mit wp_reset_query(); versuchen, da du ja den main query kaperst.

    Und showposts schreibt man auch nicht mehr, sondern post_per_page.

    Das Geheimnis des Könnens liegt im Wollen!
    [size=12]Bitte keine Hilfegesuche per PN (auch keine "privaten" Links). Das ist ein öffentliches Forum.[/SIZE]

  • Dein neues query_posts() muss zuoberst und dann das, was du bei jedem Beitrag ausgegeben haben willst – Containerbox, Headline etc. – in den Loop mit rein. Im Loop steht nur dein Exzerpt, also ist nicht erstaunlich, dass auch nur dieses drei Mal ausgegeben wird.

    Gruß
    helix

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!