Conditional Tags mit Loop nutzen

  • Seit drei Uhr heute Nachmittag versuche ich nun mit ständigem hin und her und Codezeilem verschieben folgendes Problem in den Griff zu bekommen:
    Der Code unten generiert, abhängig von der Seite, Inhalte. Den möchte ich auch unbedingt so einbauen, nur leider funktioniert er auf der Startseite nicht. Soll heißen: in der Single.php ist das kein Problem, aber in der index.php, im Loop, da wird die Zeile 10 mal eingefügt. Die Zahl kann ich mir schon erklären, denn ich zeige 10 Beiträge an und der Loop generiert dann wohl auch die Inhalte 10 mal. Wie kann ich das umgehen?

    PHP
    <?php if (is_single() || is_page() ) : if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 
        INHALT
        <?php endwhile; endif; elseif(is_home()) : if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 
        INHALT
        <?php endwhile; endif; elseif(is_category()) : ?>
        INHALT
        <?php endif; ?>

    Wie gesagt, wird es wohl am Loop liegen, aber lässt sich das irgendwie umgehen? Den Loop benötige ich deshalb, weil ich Inhalte wie "get_the_content()" nutze und zwar nicht im normalen Loop. Komme absolut nicht weiter. Habe versucht das irgendwie mit endwhile zu lösen, oder einzelne Fragmente zu entfernen/abzuändern... aber ohne php-kentnisse ist das alles nur raten ins leere und einfach ein wenig umbauen - hat leider nichts gebracht.

    In der Single.php keine Probleme, aber sobald ich die index.php aufrufe, generiert der Code statt 1 mal den Inhalt, immer 10 mal den Inhalt, eben genau so oft wie die Anzahl der Posts auf der Seite ist.

    Weiß jemand Rat?

    • 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

  • Ah ich darf nicht zweimal das [COLOR=#000000][COLOR=#007700]"if ( [/COLOR][COLOR=#0000BB]have_posts[/COLOR][COLOR=#007700]() ) : while ( [/COLOR][COLOR=#0000BB]have_posts[/COLOR][COLOR=#007700]() ) : [/COLOR][COLOR=#0000BB]the_post[/COLOR][COLOR=#007700]();" einbauen.

    Wenn ich es nur oben einbaue, funktioniert es... nur leider geht es dann nur mit zwei, nicht mit drei.
    [/COLOR][/COLOR]
    [COLOR=#000000] [COLOR=#0000BB]<?php [/COLOR][COLOR=#007700]if ([/COLOR][COLOR=#0000BB]is_single[/COLOR][COLOR=#007700]() || [/COLOR][COLOR=#0000BB]is_page[/COLOR][COLOR=#007700]() ) : if ( [/COLOR][COLOR=#0000BB]have_posts[/COLOR][COLOR=#007700]() ) : while ( [/COLOR][COLOR=#0000BB]have_posts[/COLOR][COLOR=#007700]() ) : [/COLOR][COLOR=#0000BB]the_post[/COLOR][COLOR=#007700](); [/COLOR][COLOR=#0000BB]?>[/COLOR]
    INHALT
    [COLOR=#0000BB]<?php [/COLOR][COLOR=#007700]endwhile; endif; elseif([/COLOR][COLOR=#0000BB]is_home[/COLOR][COLOR=#007700]()) :[/COLOR][COLOR=#007700] [/COLOR][COLOR=#0000BB]?>[/COLOR]
    INHALT
    [COLOR=#0000BB]<?php [/COLOR][COLOR=#007700]endif; [/COLOR][COLOR=#0000BB]?>

    Wenn ich dann wieder drei versuche, bekomme ich nur eine weiße Seite, aber verstehe nicht warum.
    [/COLOR][/COLOR]

  • Warum machst du nicht erst den Loop auf, dann die Conditional-Tags abfragen und ganz zum Schluss den Loop wieder zu? Innerhalb des Loops kannst du soviel abfragen wie du willst.

    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]

  • DAs klappt nicht bzw. ändert iwie nichts, wenn ich es richtig im Kopf habe. Hatte ich heute nachmittag schon probiert.

  • Das muss klappen, habe ich schon duzende Male so gemacht. Wie sieht denn dann dein Code aus?

    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]

  • warum sollte das nicht funktionieren?

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Nein, das funktioniert schon, aber dann erstellt er die Inhalte immer genau so oft, wie die Anzahl der Post die ich auf der Startseite anzeige. Im Post kein Problem, in der index.php aber immer so ost wie Post angezeigt werden, in meinem Fall 10 mal denselben Inhalt :( ich krieg nicht raus wieso.

  • wenn es nicht wiederholt werden soll, dann muss das ganze aus dem Loop raus. Oder verstehe ich da was falsch?

    PHP
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Das ist richtig ABER ich will ja als Inhalt dazwischen unter anderem "the_excerpt_rss" nutzen und das geht nur im Loop. Kriege den excerpt nicht ohne Loop hin, auch wenn es angeblich ein paar Lösungen gibt. Bei mir funktionieren die nicht.

  • Vielleicht stimmt der Loop, aber die Content-Ausgabe nicht. Daher die Frage wie dein kompletter Code dann aussieht. Mach es mal wie maxe es geschrieben hat. So sollte es funktionieren.

    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]

  • Stimmt. Gerade noch ein wenig rumprobiert. Wenn der Loop außerhalb ist, funktioniert es und wird auch nicht mehr mehrmals ausgegeben. Oh man... DAAAAAAANKE!!!
    Seit 3 Uhr hänge ich da dran und probiere, versuche, Google und ihr helft mir wieder.

    Danke! Danke! Danke!

    Wirklich, endlich hat das alles ein Ende für heute :)

Jetzt mitmachen!

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