2015-02-21 2 views
33

Где находится ссылка на изображение, хранящаяся в базе данных WordPress? Я искал в таблице wp_postmeta, но я не могу найти точные post_id и links.Где находится ссылка на изображение, сохраненная в базе данных WordPress?

Это правильно? Может ли кто-нибудь объяснить мне, как это работает?

+0

Популярного изображение ID хранится в 'wp_postmeta' с' meta_key 'называется' _thumbnail_id'. – rnevius

+0

как и где они связывают как 'post_id', так и изображение? – Thamaraiselvam

ответ

70

Показанный идентификатор изображения хранится в wp_postmeta с meta_key под названием _thumbnail_id. Пример:

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

Фактическая ссылка миниатюр затем содержится в wp_posts с post_type из attachment. Пример:

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

Хороший чистый и простой ответ! –

+0

Я знаю, что это старо, но это именно то, что я искал. Спасибо за четкий и правильный ответ! – Anthony

6

мне было интересно, так что здесь идет ...

  • Таблица wp_postmeta проведет запись на пост с meta_key из _thumbnail_id
  • meta_value ребенок post_id для с изображением
  • с использованием этого post_id, вы можете получить дополнительную информацию от wp_posts и wp_postmeta

Чтобы поставить все это вместе, вот как получить ребенка wp_posts строку для признакам образа пост 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; 

А вот мета-данные для этого же изображения

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; 

В метаданных будет относиться относительный путь _wp_attached_file и _wp_attachment_metadata, содержащий некоторые сериализованные данные в формате PHP.

6

здесь мой SQL с полным URL изображения

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' 

результат будет как этот

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

+0

Полезно, как это отвечает на вопрос? – rnevius

+1

Спасло меня, когда я собирался написать то же самое. #thx –

+0

Он отвечает на вопрос, предоставляя не только фактические поля и таблицы, в которых хранится значение, но при условии, что для вызова значения эзотерического оператора SQL требуется. +1 Вопрос, который должен был быть задан, - «Какая версия Wordpress делает это?» Потому что для версии 4.8 (и, вероятно, неизвестного числа предыдущих версий) вышеупомянутые ответы так же хороши, как и они, более недействительны. Вещи меняются. –

Смежные вопросы