Wo ist der Bildlink mit dem Beitrag in der WordPress-Datenbank gespeichert?


69

Wo ist der vorgestellte Bildlink in der WordPress-Datenbank gespeichert? Ich habe in der wp_postmetaTabelle gesucht, aber ich kann das genaue post_idund nicht herausfinden links.

Ist das richtig? Könnte mir bitte jemand erklären, wie es funktioniert?


Wie und wo verbinden sie beide post_idund das Bild?
Thamaraiselvam

Antworten:


157

Die vorgestellte Bild-ID wird wp_postmetamit einem meta_keyangerufenen gespeichert _thumbnail_id. Beispiel:

╔═════════╦═════════╦═══════════════╦═══════════╗
║ meta_id ║ post_id ║ meta_key      ║ meta_value║
╠═════════╬═════════╬═══════════════╬═══════════╣
║ 200     ║ 4       ║ _thumbnail_id ║ 48        ║
╚═════════╩═════════╩═══════════════╩═══════════╝

Der eigentliche Thumbnail-Link ist dann in wp_postseinem post_typevon enthalten attachment. Beispiel:

╔════╦════════════╦═════════════════════════════════════════════════════╗
║ IDpost_typeguid                                                ║
╠════╬════════════╬═════════════════════════════════════════════════════╣
║ 48 ║ attachmenthttp://example.com/wp-content/uploads/yourimage.png ║
╚════╩════════════╩═════════════════════════════════════════════════════╝

1
Ich weiß, das ist alt, aber genau das habe ich gesucht. Vielen Dank für eine klare und korrekte Antwort!
Anthony

1
Sehr hilfreich. Ich habe diese Tabellen direkt aus der Datenbank exportiert, indem ich die SQL-Struktur PHPmyAdmin und die Einfügungen data / drop table / complete verwendet habe. Führen Sie eine Suche und Ersetzung für den Doman-Namen in der resultierenden SQL-Datei durch. Dann lief die SQL in einer neuen WordPress-Datenbank. Es war das einzige, was die vorgestellten Bilder während der Migration korrekt wiederherstellte.
Heres2u

13

Ich war neugierig, also geht es weiter ...

  • Die wp_postmetaTabelle enthält einen Eintrag für den Beitrag mit meta_keyvon_thumbnail_id
  • Das meta_valueist ein Kind post_idfür das vorgestellte Bild
  • Damit post_iderhalten Sie weitere Informationen von wp_postsundwp_postmeta

Um alles zusammenzufassen, hier ist, wie man die untergeordnete wp_postsZeile für das vorgestellte Bild des Beitrags erhält XXX...

SELECT childpost.* 
FROM wp_posts childpost 
INNER JOIN wp_postmeta parentmeta ON (childpost.ID=parentmeta.meta_value)
WHERE parentmeta.meta_key='_thumbnail_id' 
AND parentmeta.post_id=XXX;

Und hier sind die Metadaten für dasselbe Bild

SELECT childmeta.* 
FROM wp_postmeta childmeta 
INNER JOIN wp_postmeta parentmeta ON (childmeta.post_id=parentmeta.meta_value)
WHERE parentmeta.meta_key='_thumbnail_id' 
AND parentmeta.post_id=XXX;

Die Metadaten enthalten einen _wp_attached_filerelativen Pfad und einige, _wp_attachment_metadatadie einige PHP-serialisierte Daten enthalten.


Was wäre die SQL, in der ich das Bild erhalten könnte, das WordPress komprimiert, ich meine die anderen Größen: 300x300, 150x150 (WordPress-Größen pro Bild)?
Lenin Zapata

11

hier mein sql mit vollem url bild

SELECT concat((select option_value from wp_options where option_name ='siteurl'  limit 1),'/wp-content/uploads/',childmeta.meta_value)
FROM wp_postmeta childmeta 
INNER JOIN wp_postmeta parentmeta ON (childmeta.post_id=parentmeta.meta_value)
WHERE parentmeta.meta_key='_thumbnail_id' and childmeta.meta_key = '_wp_attached_file'
AND parentmeta.post_id = POST_ID ;

select option_name from wp_options where option_name ='siteurl' 

Das Ergebnis wird so sein

http://yourdomain/blog-wp/wp-content/uploads/2015/04/IMG_06062014_155904.png


1
Ersparte mir Zeit, als ich gerade das Gleiche schreiben wollte. #thx
Marc

Es beantwortet die Frage, indem es nicht nur die tatsächlichen Felder und Tabellen bereitstellt, in denen der Wert gespeichert ist, sondern auch die esoterische SQL-Anweisung, die für den Zugriff auf den Wert erforderlich ist. +1 Die Frage, die hätte gestellt werden sollen, lautet: "Für welche Version von Wordpress gilt dies?" Da für Version 4.8 (und wahrscheinlich eine unbekannte Anzahl früherer Versionen) die obigen Antworten, so schön sie auch sind, nicht mehr gültig sind. Dinge ändern sich.
Gefangener 13

9

Selbst wenn die Antwort von rnevius richtig schien, gab das Ergebnis einige Bilder mit dieser Art von URL zurück: http://www.example.com/?attachment_id=48, was in meinem Fall nicht funktionierte.

Getestet auf Wordpress 4.9.3:

Eine andere Lösung ist _wp_attached_filestattdessen:

wp_postmeta

Suche nach Wert _thumbnail_idinmeta_key

meta_id   | post_id   | meta_key            | meta_value
200       | 4         | _thumbnail_id       | 48

wp_postmeta

Wieder in wp_postmetazum Wert suchen _wp_attached_filein meta_keydem post_idsie die passenden meta_valuefindet in vorheriger Abfrage

meta_id   | post_id   | meta_key            | meta_value
1020      | 48        | _wp_attached_file   | 2018/09/picture.jpg

Abfrage:

SELECT wp.ID, wpm2.meta_value
FROM wp_posts wp
    INNER JOIN wp_postmeta wpm
        ON (wp.ID = wpm.post_id AND wpm.meta_key = '_thumbnail_id')
    INNER JOIN wp_postmeta wpm2
        ON (wpm.meta_value = wpm2.post_id AND wpm2.meta_key = '_wp_attached_file')
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.