WordPress 数据库中存储的帖子特色图片链接在哪里?

Posted

技术标签:

【中文标题】WordPress 数据库中存储的帖子特色图片链接在哪里?【英文标题】:Where is the post featured image link stored in the WordPress database? 【发布时间】:2015-04-22 23:57:23 【问题描述】:

特色图片链接存储在 WordPress 数据库中的什么位置?我在wp_postmeta 表中进行了搜索,但找不到确切的post_idlinks

这是正确的吗?谁能给我解释一下它是如何工作的?

【问题讨论】:

他们如何以及在何处链接post_id 和图像? 【参考方案1】:

即使rnevius 的答案似乎是正确的,结果还是返回了一些具有这种 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')

【讨论】:

【参考方案2】:

这里是我的带有完整 url 图片的 sql

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

【讨论】:

节省了我的时间,因为我正准备写同样的东西。 #thx 它回答了这个问题,不仅提供了存储值的实际字段和表,还提供了访问值所需的深奥 SQL 语句。 +1 应该问的问题是“这适用于哪个版本的 Wordpress?”因为对于 4.8 版(可能还有未知数量的先前版本),上述答案虽然很好,但不再有效。事情发生了变化。【参考方案3】:

特色图像 ID 存储在 wp_postmeta 中,meta_key 称为 _thumbnail_id。示例:

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

实际的缩略图链接随后包含在wp_posts 中,其中post_typeattachment。示例:

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

【讨论】:

我知道这是旧的,但这正是我要找的。感谢您提供清晰正确的答案! 非常有帮助。我使用 phpmyAdmin SQL 结构和数据/删除表/完整插入直接从数据库中导出了这些表。在生成的 SQL 文件中对域名进行查找和替换。然后在一个新的 wordpress 数据库中运行 SQL。这是在迁移过程中正确恢复特色图像的唯一方法。 对于任何试图人为创建这些关系的人来说,似乎还需要第二个 postmeta 记录用于带有键 _wp_attached_file 和值 = 附​​加文件路径的缩略图帖子(即 /2020/10/... ) 使其使用get_post_thumbnail() 函数出现。可能我在此过程中搞砸了其他事情,但这对我有用。 非常感谢。导出了没有特色图片的网站。这有助于使用 phpmyadmin 恢复附件【参考方案4】:

我很好奇,所以这里......

wp_postmeta 表将包含 meta_key_thumbnail_id 的帖子条目 meta_value 是特色图片的孩子post_id 使用post_id,您可以从wp_postswp_postmeta 获得更多信息

总而言之,这里是如何为帖子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,我可以获得 wordpress 压缩的图像,我的意思是其他尺寸:300x300、150x150(每个图像的 wordpress 尺寸)?

以上是关于WordPress 数据库中存储的帖子特色图片链接在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

通过 SQL 检索带有特色图片的 wordpress 帖子

WordPress 自定义帖子类型前端特色图片提交

如何在没有 single.php 的情况下从 wordpress 帖子中删除特色图片

WordPress 自定义帖子特色图片、标题和内容社交媒体共享

Wordpress - 自定义帖子存档页面上的特色图片

如何强制WordPress Gutenberg刷新特色图片?