get_posts liefert falsche Daten

  • Hallo,

    ich arbeite gerade an einem Theme für eine Homepage und habe das Problem, dass get_posts auf z.B. Seiten falsche Daten liefert. Meine page.php sieht ganz simpel so aus:

    PHP
    <?php get_header(); ?>
    <?php get_sidebar(); ?>
    <h1><?php the_title(); ?></h1>
    
    
    <?php the_content(); ?>
    
    
    <?php get_footer(); ?>


    In meiner sidebar.php führe ich folgenden Code aus:

    Wenn ich nun z.b. eine Seite aufrufe wird in der Sidebar aber der Inhalt der Seite ausgegeben. Ist das ein beabsichtigtes Verhalten von Wordpress oder habe ich etwas falsch gemacht?

    Grüße,
    Max

    • 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

  • Hey,
    danke für deine schnelle Antwort.

    Ich habe das ganze nun geändert. Wenn ich das ganze nicht missverstanden habe dürfte das get_posts nicht das "Laden der Seite" beeinflussen

    Und die page.php hab ich nun abgespeckt aus dem TwentyTen-Layout

    PHP
    <?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
    
    
    <h1><?php the_title(); ?></h1>
    <?php the_content(); ?>
    
    
    <?php endwhile; ?>

    Jetzt wird im Teil für die Seite der letzte Artikel ausgegeben.

  • Hallo nochmal,

    sorry für den Doppelpost, aber bevor ich mich Totsuche nach dem Fehler:

    Ist es überhaupt erlaubt, "Post-Abfragen" im header.php bzw in der sidebar zu machen (wenn die Sidebar vor dem eigentlichen Seiteninhalt aufgerufen wird)?

    Grüße,
    Max

  • Zitat

    Ist es überhaupt erlaubt, "Post-Abfragen" im [COLOR=#0066cc]header[/COLOR].php bzw in der [COLOR=#0066cc]sidebar[/COLOR] zu machen (wenn die [COLOR=#0066cc]Sidebar[/COLOR] vor dem eigentlichen Seiteninhalt aufgerufen wird)?


    ja, und das ist normalerweise auch kein problem.

    die verwendung von $posts und $post im code von get_posts() kann einfluss auf nachfolgende loops haben;

    ich haette vermutet, dass 'wp_reset_query();' das wieder ausgleicht;

    versuch:
    anstelle von $posts zB $my_posts oder so zu verwenden.

  • Ich habe jetzt jetzt Variable mit einem my_ prefix versehen zum testen. Er zeigt mir zwar zwei Ergebnisse an in der Sidebar (also zwei Posts) allerdings mit den Daten von der aktuellen Seite. Meine Vermutung ist, dass ich z.b. den Titel des Artikels nicht mit the_title() aufrufen muss sondern mit "etwas anderem"? Kann das sein?

    Grüße,
    Max

  • Ja, habe ich, es sieht so aus:

    PHP
    //The Query
                                $my_posts = get_posts( array( 'numberposts'     => 3) );
    
    
                                //The Loop
                                foreach($my_posts as $my_post) : setup_postdata($my_post);
  • Habe gemerkt, das der gleiche Fehler auch bei Artikel auftritt. Sehe in der Sidebar zwei einträge aber mit den Daten des Artikels/Der Seite.

    Single.php sieht wie folgt aus:

  • Hallo,

    das ändert leider nichts. Ich denke, was Wordpress im Hintergrund macht ist schon richtig, er durchläuft das foreach zwei mal (ich habe nur zwei Artikel im moment, limit ist 3).

    Daten werden immernoch die Falschen ausgegeben. :(

    Grüße,
    Max

  • Habe die Tage jetzt erstmal am restlichen Forum weitergemacht, aber immernoch keine Lösung für das Problem gefunden.

    Gibt es vielleicht einen Workaround für dieses Problem?

Jetzt mitmachen!

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