以编程方式通过URL获取图像并保存在Uploads文件夹中

时间:2011-03-18 作者:Simon Blackbourn

我参与了从另一个CMS到WordPress的大规模迁移。我们有一个数据库的副本,并且已经解决了如何提取内容并使用wpdb

然而,有几千张图片,我们想自动拉过来,生成各种大小的图片,然后贴到帖子上,以节省大约一周的工作!

有没有办法通过URL从远程站点获取图像并将其保存在我的wp uploads文件夹中?我想这是wp_http 但我对此并不熟悉。

一旦我得到图像并保存它,我就可以使用wp_generate_attachment_metadata 创建各种尺寸和wp_insert_attachment 把它贴在柱子上。

ThanksSimon公司

2 个回复
最合适的回答,由SO网友:John P Bloch 整理而成

实际上,有一个很好的功能可以为您完成这三件事:

media_sideload_image( $url, $post_id, $description );
第一个参数是要下载的图像的远程url。第二个参数是要附加图像的帖子的帖子id。第三个参数是可选的,但如果包含,则将是一个描述。

我建议您找到一种方法来限制下载,这样您就不会一直超时,例如限制每次加载的图像数量,并将导入器设置为在下载之间刷新自己,或者使用AJAX异步地一次更新一个图像。

SO网友:bryceadams

约翰的回答是正确的:使用media_sideload_image, 请注意,如果您没有在WP Admin的上下文中执行此操作,则可能需要先使用这些脚本:

require_once(ABSPATH . \'wp-admin/includes/media.php\');
require_once(ABSPATH . \'wp-admin/includes/file.php\');
require_once(ABSPATH . \'wp-admin/includes/image.php\');
请参见https://codex.wordpress.org/Function_Reference/media_sideload_image#Notes

结束

相关推荐

Changing attachment urls?

如何更改附件页URL的格式/[post-url]/[attachment-name]/ 到/media/[attachment-name]/? 我知道我可以覆盖get_attachment_link 通过attachment_link 过滤器,但我想我需要更改重定向结构,以便WordPress知道如何处理这些URL?