Wo ist der vorgestellte Bildlink in der WordPress-Datenbank gespeichert? Ich habe in der wp_postmeta
Tabelle gesucht, aber ich kann das genaue post_id
und nicht herausfinden links
.
Ist das richtig? Könnte mir bitte jemand erklären, wie es funktioniert?
post_id
und das Bild?Antworten:
Die vorgestellte Bild-ID wird
wp_postmeta
mit einemmeta_key
angerufenen gespeichert_thumbnail_id
. Beispiel:Der eigentliche Thumbnail-Link ist dann in
wp_posts
einempost_type
von enthaltenattachment
. Beispiel:╔════╦════════════╦═════════════════════════════════════════════════════╗ ║ ID ║ post_type ║ guid ║ ╠════╬════════════╬═════════════════════════════════════════════════════╣ ║ 48 ║ attachment ║ http://example.com/wp-content/uploads/yourimage.png ║ ╚════╩════════════╩═════════════════════════════════════════════════════╝
quelle
Ich war neugierig, also geht es weiter ...
wp_postmeta
Tabelle enthält einen Eintrag für den Beitrag mitmeta_key
von_thumbnail_id
meta_value
ist ein Kindpost_id
für das vorgestellte Bildpost_id
erhalten Sie weitere Informationen vonwp_posts
undwp_postmeta
Um alles zusammenzufassen, hier ist, wie man die untergeordnete
wp_posts
Zeile für das vorgestellte Bild des Beitrags erhältXXX
...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_file
relativen Pfad und einige,_wp_attachment_metadata
die einige PHP-serialisierte Daten enthalten.quelle
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
quelle
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_file
stattdessen:wp_postmeta
Suche nach Wert
_thumbnail_id
inmeta_key
wp_postmeta
Wieder in
wp_postmeta
zum Wert suchen_wp_attached_file
inmeta_key
dempost_id
sie die passendenmeta_value
findet in vorheriger Abfragemeta_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')
quelle