替换WordPress数据库中特色图片的URL的功能?

时间:2019-07-11 作者:Marc

不久前,我将wordpress安装的所有图像上传到/媒体/文件夹。因此,类似以下内容的URL:

http://example.com/media/featured-image-2010.jpg

这个文件夹非常非常大。因此,我切换到日期文件夹结构:

http://example.com/media/2019/07/featured-image-2019.jpg

因此,我编写了一个插件来循环浏览所有图像以获取url。以下是摘录:

foreach ($posts as $post):
  $featured_image_url = wp_get_attachment_url(get_post_thumbnail_id( $post->ID ));
  echo featured_image_url;
endforeach;
我的近一半图像仍然是平面媒体文件夹结构。但我想删除媒体文件夹根目录中的所有图像,并使用日期文件夹对其进行排序。

因此,我的想法是将文件复制到帖子的相应文件夹,并更改特色图片附件的url。但wordpress无法使用函数更改URL。有什么诀窍吗?我查看了数据库,但我真的不明白特色图片和帖子之间的联系是如何工作的。

如何更改特色图像的url?

1 个回复
最合适的回答,由SO网友:WebElaine 整理而成

特色图片实际上是通过ID而不是URL关联的。因此,只要在移动图像时(我假设通过FTP)也更新了数据库中的图像URL,就不必更新任何将图像用作特色图像的帖子。

WP将图像URL存储为Posteta。因此,对于每个附件,您需要找到帖子ID,然后搜索_wp_attached_file 该特定帖子ID的postmeta键。找到后,可以编辑它以添加年份和月份。

所以你应该找到

_wp_attached_file = media/file.jpg
并将其更改为

_wp_attached_file = media/2018/06/file.jpg
如果应该在2018年6月的文件夹中。

--但是,如果您在实际的帖子内容中的任何地方也使用了这些图像,则该部分不会自动更新。因此,您还必须更新包含这些图像的每个帖子(您应该能够在phpmyadmin中搜索它们,或者您可以使用现有代码查找所有URL,然后构建一个正则表达式来匹配URL中没有年份和月份的任何帖子,并添加更多代码来确定它们需要进入的月份和年份,并在数据库中更新该值。

相关推荐

Altered Media Library URLs

我有一个客户的网站,是在他们离开另一家代理机构后我找到的。该机构使用了一个专有主题和自己的自托管页面生成器,以防止其在除他们之外的任何其他托管环境中更新或编辑。它的另一个方面是重新映射主题的URL并上载目录。因此,例如,代替WP在中查找主题文件http://domain.com/wp-content/themes/…. 它在里面找他们http://domain.com/t/….同样,对于图像上载,也可以在http://domain.com/wp-content/uploads/…, 它在里面找他们http