2015-02-21 10 views
33

Dov'è il collegamento dell'immagine in primo piano memorizzato nel database di WordPress? Ho cercato nel tavolo wp_postmeta ma non riesco a trovare l'esatto post_id e links.Dov'è il link dell'immagine post in evidenza memorizzato nel database di WordPress?

È corretto? Qualcuno potrebbe spiegarmi come funziona?

+0

L'ID Foto di presentazione è memorizzato in 'wp_postmeta' con un' meta_key 'chiamato' _thumbnail_id'. – rnevius

+0

come e dove stanno collegando sia 'post_id' che immagine? – Thamaraiselvam

risposta

70

L'ID immagine in primo piano è memorizzato in wp_postmeta con un meta_key chiamato _thumbnail_id. Esempio:

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

Il legame della miniatura viene poi contenuto in wp_posts con un post_type di attachment. Esempio:

╔════╦════════════╦═════════════════════════════════════════════════════╗ 
║ ID ║ post_type ║ guid            ║ 
╠════╬════════════╬═════════════════════════════════════════════════════╣ 
║ 48 ║ attachment ║ http://example.com/wp-content/uploads/yourimage.png ║ 
╚════╩════════════╩═════════════════════════════════════════════════════╝ 
+0

Bella risposta pulita e semplice! –

+0

So che questo è vecchio, ma questo è esattamente quello che stavo cercando. Grazie per una risposta chiara e corretta! – Anthony

6

ero curioso, quindi ecco qui ...

  • La tabella wp_postmeta terrà una voce per il post con meta_key di _thumbnail_id
  • il meta_value è un bambino post_id per la immagine in evidenza
  • utilizzando tale post_id, è possibile ottenere ulteriori informazioni da wp_posts e wp_postmeta

a mettere tutto insieme, ecco come ottenere il wp_posts riga figlio per l'immagine funzionalità di posta 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; 

Ed ecco i metadati per quella stessa immagine

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; 

I metadati includeranno un percorso relativo _wp_attached_file e uno _wp_attachment_metadata contenente alcuni dati serializzati PHP.

6

qui il mio sql immagine URL completo con

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' 

il risultato sarà come questo

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

+0

Sebbene utile, come risponde la domanda? – rnevius

+1

Mi ha risparmiato il tempo dato che stavo scrivendo la stessa cosa. #thx –

+0

Risponde alla domanda fornendo non solo i campi e le tabelle effettivi in ​​cui è archiviato il valore, ma ha fornito l'istruzione SQL esoterica necessaria per accedere al valore. +1 La domanda che dovrebbe essere posta è "A che versione di Wordpress si applica?" Perché per la versione 4.8 (e probabilmente un numero sconosciuto di versioni precedenti), le risposte di cui sopra, così come sono, non sono più valide. Le cose cambiano. –

Problemi correlati