1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

$post enthält immer Daten des letzten Posts statt der Übersichtsseite

Dieses Thema im Forum "Allgemeines" wurde erstellt von finno, 13. Februar 2014.

Schlagworte:
  1. finno

    finno Well-Known Member

    Registriert seit:
    23. Juli 2013
    Beiträge:
    66
    Zustimmungen:
    0
    Hi,

    mein eigentliches Problem ist, dass ich eine Unterscheidung zwischen Post und Kategorie (bzw Übersichtsseite) machen möchte. Folgendes klappt aber leider nicht:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Das Problem ist, dass auf meiner statischen Seite www.../blog, auf der die Artikel (als Snippets) ausgegeben werden, die Variable $post immer die Daten des letzten Posts enthält. Wenn ich zB ganz am Anfang der index.php (Graphene Theme) den oben genannten Code einfüge, wird auf der Blogseite "Post" ausgegeben. In der Datenbank sehe ich aber, dass die ID der entsprechenden Seite in wp_posts gleich 11 ist.

    Vielleicht verständlicher: Für folgenden Code in der index.php wird auf meiner Blogseite "1288" ausgegeben:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Die korrekte ID wäre aber "11".

    Weiß jemand, wie ich mir die echte ID der Blogseite ausgeben lassen kann? Oder gibt es vielleicht eine andere Möglichkeit, wie ich die Blogseite eindeutig identifizieren kann (bzw von Artikeln unterscheiden)??

    BG
     
  2. finno

    finno Well-Known Member

    Registriert seit:
    23. Juli 2013
    Beiträge:
    66
    Zustimmungen:
    0
    Ich hab eine Lösung gefunden :)

    Zwar funktioniert is_archive() komischerweise nicht, um die Archivseite (Blogseite) zu identifizieren. Aber is_singular() ergibt bei einer Beitragsseite true und bei der Archivseite false. So geht's auch.
     
  3. alchymyth

    alchymyth Well-Known Member

    Registriert seit:
    7. Juni 2009
    Beiträge:
    3.959
    Zustimmungen:
    1
    #3 alchymyth, 13. Februar 2014
    Zuletzt bearbeitet: 13. Februar 2014
  4. Shadow

    Shadow Well-Known Member

    Registriert seit:
    12. Februar 2007
    Beiträge:
    2.970
    Zustimmungen:
    57
    zurück zum Ursprung:
    Posts sind zb Beiträge und Seiten (siehe Dashboard) und anderes
    jeder Post hat eine ID

    im Frontend gibt es diverse Seiten Home, Blog, Category, pages, usw
    auf Home (oder bei dir Blog), Categorey, Archive usw werden mehrer Posts (beiträge) angezeigt, dh auf der Seite kommen mehrere ID dann natürlich vor, dabei stoßt man immer auf den Begriff Loop (ein Schleife über mehrere Beiträge)
    dann gibt es noch Seiten wo nur ein post angezeigt wird
    zb bei Pages (meist Standarmäßige Seiten im Menü) werden die Seiten (die man im Dashboard anlegt) angezeigt.
    bei Single, wird zb ein Post (Beitrag) angezeigt.
    is_singular zeigt dort an wo du den code eingesetzt hast.
    eine Einzelbeitragsseiten Single zeigt natürlich True, Archive daher false,
    Blog Seite wo mehrer Beiträge angezeigt werden würde dann ebenfalls false zeigen

    warum bei deiner ersten Frage nicht 11 sondern 1288 angezeigt wurde, liegt wahrscheinlich daran, weil du die ID innerhalb des Loop abgefragt hast, und dort mehrer Beiträge dann angezeigt werden, von Nr 11 bis Nr 1288

    wenn es dich beschäftigt, lies mal http://codex.wordpress.org nach um die Templates und Posts Strukturen und weiteres zu verstehen.
     
  5. finno

    finno Well-Known Member

    Registriert seit:
    23. Juli 2013
    Beiträge:
    66
    Zustimmungen:
    0
    Danke für die Hilfe!

    @alchymyth
    is_home springt bei der Archivseite (/blog) an UND bei einer Artikelseite ebenfalls (/article1288 ).

    @Shadow
    Ich hatte echo $post->ID; ganz oben in der index.php meines Themes eingefügt. Wenn ich richtig liege, müsste das doch eine Stelle außerhalb des Loop sein, quasi der Ausgangspunkt aller php Scripte. Deshalb ist es ja auch so verwunderlich. Im Dashbord sehe ich nämlich, dass die ID von /blog 11 ist, genauso auch in der Datenbank. Nur die Abfrage via php ergibt immer die ID, des zuletzt veröffentlichten Posts.

    Irgendwas muss es mit der $post Variable zu tun haben. Schließlich ist sie immer mit den Daten des letzten Post bestückt. Keine Ahnung, ob die irgendwo resettet hätte werden müssen und jetzt auch außerhalb des Loops noch verfügbar ist. Das ist jetzt aber nur noch Halbwissen und wilde Spekulation :)
     
  6. Shadow

    Shadow Well-Known Member

    Registriert seit:
    12. Februar 2007
    Beiträge:
    2.970
    Zustimmungen:
    57
    da wilde Spekulation dich nicht zu Ziel führen, die Strukturen von Wordpress und die dazu notwendigen PHP kenntnisse sind auf codex.wordpress.org und www.php.net zu finden, ohne diese Kenntnisse dir erklären zu wollen, das deine Spekulationen leider nicht zielführen sind, weil Programmierung auch mehr als Halbwissen verlangt, wird uns und auch dich nicht weiterbringen.
    denn die $post->ID wird bei einem Loop natürlich bei jedem post neu beschrieben, und immer die letzte ID drin stehen, WP nutzt diese Variable um dann den richtigen Post anzuzeigen, die Richtigen Links im Titel zu setzten, die richtigen Kategorien anzuzeigen usw.. aber der Anfang das wären Programmier Grundkenntnisse, die noch nicht mal PHP Grundlagen sein brauchen, sprich was ist eine Variable und wie arbeitet man mit Variablen.
     
    #6 Shadow, 14. Februar 2014
    Zuletzt bearbeitet: 14. Februar 2014
  7. finno

    finno Well-Known Member

    Registriert seit:
    23. Juli 2013
    Beiträge:
    66
    Zustimmungen:
    0
    Hehe, ich verstehe gut, dass Helfende nicht so gut drauf zu sprechen sind, wenn jemand ohne die nötigen Grundkenntnisse und entsprechende Eigeninitiative um Rat fragt. Glaub mir aber bitte, dass ich schon nen ganzen Tag auf wordpress.org u Co unterwegs war bevor ich hier gepostet habe. Grundkenntnisse muss ich mir aus Zeitgründen leider nach und nach aneignen...

    Solange dämmert mir aber das Prinzip. $post ist wohl nur für Posts (wie der Name schon sagt). Bei einer Archivseite machen ja auch Werte wie post_content oder post_excerpt keinen Sinn. Ich hab das ganze auch mal auf einer anderen Seite beim twentythirteen Theme ausprobiert. Da wird natürlich auch die ID des letzten Posts angezeigt.

    Wen es interessiert - an die ID außerhalb von Posts kommt man mit get_queried_object_id()

    Also nichts für ungut bitte. Problem gelöst. Und nochmals danke für die Bemühungen!
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden