post 特色图片 link 存储在 WordPress 数据库中的什么位置?
Where is the post featured image link stored in the WordPress database?
特色图片 link 存储在 WordPress 数据库中的什么位置?我在 wp_postmeta
table 中搜索但找不到确切的 post_id
和 links
.
这是正确的吗?谁能给我解释一下它是如何工作的?
特色图像 ID 存储在 wp_postmeta
中,meta_key
名为 _thumbnail_id
。示例:
╔═════════╦═════════╦═══════════════╦═══════════╗
║ meta_id ║ post_id ║ meta_key ║ meta_value║
╠═════════╬═════════╬═══════════════╬═══════════╣
║ 200 ║ 4 ║ _thumbnail_id ║ 48 ║
╚═════════╩═════════╩═══════════════╩═══════════╝
然后实际缩略图 link 包含在 wp_posts
中,post_type
为 attachment
。示例:
╔════╦════════════╦═════════════════════════════════════════════════════╗
║ ID ║ post_type ║ guid ║
╠════╬════════════╬═════════════════════════════════════════════════════╣
║ 48 ║ attachment ║ http://example.com/wp-content/uploads/yourimage.png ║
╚════╩════════════╩═════════════════════════════════════════════════════╝
我很好奇,所以这里...
wp_postmeta
table 将保留 post 和 meta_key
的 _thumbnail_id
的条目
meta_value
是特色图片的 child post_id
- 使用
post_id
,您可以从 wp_posts
和 wp_postmeta
获得更多信息
总而言之,下面是获取 post XXX
...
的特色图片的 child wp_posts
行的方法
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
相对路径,以及一个包含一些 PHP 序列化数据的 _wp_attachment_metadata
。
这里是我的 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
即使 答案看起来正确,结果返回了一些带有这种 URL 的图像:
http://www.example.com/?attachment_id=48 这对我来说不起作用。
在 Wordpress 4.9.3 上测试:
另一个解决方案是使用 _wp_attached_file
代替:
wp_postmeta
在 meta_key
中搜索值 _thumbnail_id
meta_id | post_id | meta_key | meta_value
200 | 4 | _thumbnail_id | 48
wp_postmeta
再次在 wp_postmeta
中,在 meta_key
中搜索值 _wp_attached_file
,其中 post_id
匹配上一个查询 meta_value
中的查找
meta_id | post_id | meta_key | meta_value
1020 | 48 | _wp_attached_file | 2018/09/picture.jpg
查询:
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')
特色图片 link 存储在 WordPress 数据库中的什么位置?我在 wp_postmeta
table 中搜索但找不到确切的 post_id
和 links
.
这是正确的吗?谁能给我解释一下它是如何工作的?
特色图像 ID 存储在 wp_postmeta
中,meta_key
名为 _thumbnail_id
。示例:
╔═════════╦═════════╦═══════════════╦═══════════╗
║ meta_id ║ post_id ║ meta_key ║ meta_value║
╠═════════╬═════════╬═══════════════╬═══════════╣
║ 200 ║ 4 ║ _thumbnail_id ║ 48 ║
╚═════════╩═════════╩═══════════════╩═══════════╝
然后实际缩略图 link 包含在 wp_posts
中,post_type
为 attachment
。示例:
╔════╦════════════╦═════════════════════════════════════════════════════╗
║ ID ║ post_type ║ guid ║
╠════╬════════════╬═════════════════════════════════════════════════════╣
║ 48 ║ attachment ║ http://example.com/wp-content/uploads/yourimage.png ║
╚════╩════════════╩═════════════════════════════════════════════════════╝
我很好奇,所以这里...
wp_postmeta
table 将保留 post 和meta_key
的_thumbnail_id
的条目
meta_value
是特色图片的 childpost_id
- 使用
post_id
,您可以从wp_posts
和wp_postmeta
获得更多信息
总而言之,下面是获取 post XXX
...
wp_posts
行的方法
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
相对路径,以及一个包含一些 PHP 序列化数据的 _wp_attachment_metadata
。
这里是我的 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
即使
在 Wordpress 4.9.3 上测试:
另一个解决方案是使用 _wp_attached_file
代替:
wp_postmeta
在 meta_key
_thumbnail_id
meta_id | post_id | meta_key | meta_value
200 | 4 | _thumbnail_id | 48
wp_postmeta
再次在 wp_postmeta
中,在 meta_key
中搜索值 _wp_attached_file
,其中 post_id
匹配上一个查询 meta_value
中的查找
meta_id | post_id | meta_key | meta_value
1020 | 48 | _wp_attached_file | 2018/09/picture.jpg
查询:
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')