post_status falsch?

  • Hallo Wordpresser,

    ich bin dabei ein plugin zu schreiben, mit dem ich Bilder aus den letzten x-Beiträgen, die veröffentlicht sind, anzeigen kann. (Evtl später noch bildgröße anpassen etc)

    Mir ist jetzt aber aufgefallen, dass das Bild für den Artikel als eigene Spalte in der Datenbank, angelegt wird. Wo ist jetzt der secondary key, der artikel mit artikelbild verbindet?

    Bzw über welchen Dat kann ich abfragen, ob der Artikel ein Bild hat(oder nicht)?

    edit:entschuldigt den Titel. Hatte das Problem erst an einer anderen Stelle vermutet.

    Grüße
    canono

    Einmal editiert, zuletzt von canono (10. Juli 2009 um 18:45)

    • 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

  • Du könntest auf einem meiner Plugins aufbauen:
    http://blog.zeitgrund.de/2007/09/12/plu…uploaded-files/
    Ist zwar schon älter, aber die Abfrage könnte so noch funktionieren.

    Danke für die Hilfe.

    Soweit schonmal ganz hilfreich!
    Vielleicht kannst du mir noch weiterhelfen.

    Ich möchte, dass mein Plugin ausserhalb des Loops funktioniert. Habe da auch schon ein paar ansätze gefunden. Leider nicht das richtige.

    Es soll so sein, dass aus den letzten n-Beiträgen die Bilder angezeigt werden(wenn welche vorhanden sind).

    In meinem Plugin habe ich dann folgendes geschrieben

    PHP
    global  $wpdb, $wp_query;
    $post = $wp_query->post;
    $picture_data = $wpdb->get_results(Datenbankabfrage)

    Leider wird dadurch nur ein Beitragsbild angezeigt?

    Hat jemand eine Idee, wie man eine bestimmte Anzahl an Bildern bekommt?

    Edit: Die ID der letzten Artikel würde mir schon reichen, um weiter zu kommen.

    Einmal editiert, zuletzt von canono (11. Juli 2009 um 13:15)

  • Die letzten IDs von Beiträgen oder die letzten Bilder kannst du ja einfach direkt aus der DB abfragen. Schau einfach mal in die Tabellen rein, dann siehst du, wonach du abfragen musst.

    "Eine gut gestellte Frage ist schon halb beantwortet."

  • Die letzten IDs von Beiträgen oder die letzten Bilder kannst du ja einfach direkt aus der DB abfragen. Schau einfach mal in die Tabellen rein, dann siehst du, wonach du abfragen musst.

    Das mache ich eigentlich auch?!

    Ich glaube, dass ich etwas übersehe!

  • Habs geschafft.

    Das SqlStatement war falsch.

    Sollte wohl eher so aussehen.

    PHP
    $picture_data = $wpdb->get_results("SELECT ID, post_parent, guid, post_mime_type, post_type, post_title FROM wp_posts WHERE post_type = 'attachment' AND post_mime_type = 'image/jpeg'");

    Vielen Dank

    Canono

    Edit: Falls noch jemand eine Verbesserung auf Lager hat, kann er diese gerne posten.

  • Jetzt habe ich noch ein Problem zu meinem Anliegen.

    Wie kann ich verhindern, dass mir die Bilder aus den "Artikelüberarbeitungen" auch noch angezeigt werden. Abschalten der "Artikelüberarbeitungen" geht nicht, da diese vorhanden bleiben sollen.

    Ich komme nicht darauf, wie ich das in ein sqlstatment packen soll!

    Für jede Hilfe bin ich dankbar.

    Grüße

    canono

  • Wie gesagt, schau dir doch mal genau die Inhalte der Tabellen an...es gibt ja glaub ich die Spalte post_status oder so. Und bei Revisionen müsste da was anderes drin stehen als bei veröffentlichten Beiträgen.
    Notfalls muss man mit JOIN zwei Abfragen verknüpfen.

    "Eine gut gestellte Frage ist schon halb beantwortet."

  • Danke für die Mühe bis jetzt!

    Das Problem ist immer noch vorhanden, und ich glaube es hat einen dieser zwei Gründe.

    Entweder ich bin zu blöd ein passendes SQL-Statement zu finden, oder die Wordpress tabellen bieten nicht die passenden relationen.

    Ich habe auch schon hier-> http://codex.wordpress.org/images/8/83/WP_27_dbsERD.png
    geschaut. Was ja eine gute Ansicht der Tabellen darstellt.

    Fakt ist, wenn mehrere Revisionen eines Bildes (das zu einem Beitrag gehört) vorhanden sind kann man da auch nichts mehr mit ID <> post_parent machen oder ähnlich. Oder versehe ich mich nun total.

    Ich weiss nicht weiter.
    Bitte helft mir.

    Grüße canono.

    Einmal editiert, zuletzt von canono (12. Juli 2009 um 16:57)

  • So, jetzt bin ich wieder ein Stück weiter!

    Ich habe ein passendes SQL-Statement geschrieben, dass mir die Bilder der Artikel auflistet.

    PHP
    $picture_data = $wpdb->get_results("SELECT * FROM wp_posts 
                                            WHERE  post_type = 'attachment' 
                                            AND post_mime_type = 'image/jpeg'
                                            GROUP BY post_parent
                                            ORDER BY post_modified DESC ");

    Jetzt habe ich wieder ein Problem!
    Ich verpacke dieses Query jetzt in...

    PHP
    "<li><a href=\"".???????."\"> <img alt=\"$data_out->post_title\" title=\"$data_out->post_title\" id=\"$data_out->post_parent\" height=\"150\" src=\"$data_out->guid\" /></a></li>"

    diesem Listenelement und möchte, dass der Link

    PHP
    <a href=\"".??????."\">

    auf den dazugehörigen Artikel verweist.
    Wenn ich dort

    PHP
    get_permalink($data_out->ID)

    verwende, dann ist es der Link zum Bild. Mit der Globalen Variable $id geht es auch nicht, da dann nur die erste Beitrags-ID angezeigt wird.

    Ich habe es schon mit Subquerys versucht, aber da komme ich mit GROUP BY und der Abfrage nach post_mime_type etc ins Gehege.

    Hat jemand eine Idee, wie ich das hinbekommen kann?

  • Selber nachdenke hilft ja bekanntlich^^

    Habe das Problem nun auch beseitigt.

    Das muss so...

    PHP
    <a href=\"".get_permalink($data_out->post_parent)."\"

    aussehen.

    Grüße

    canono

Jetzt mitmachen!

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