理论上你会认为它可以这样工作。
实际上,事实并非如此。
有一个简单的原因,没有插件可以做到这一点。每当您将媒体导入WordPress时,它都会创建各种大小的缩略图文件(即使是视频)。
为了创建这些缩略图,它必须下载(您猜对了)整个媒体文件。如果是视频,你可以下载到第一帧,然后用它来制作缩略图,但这需要一些自定义编码才能在一定的字节数后停止下载。
因此,最终,考虑到批量下载文件比一次下载一个文件要容易得多,这是不现实的。
实用的方法是一次下载一个文件,将其插入WordPress(不是直接插入数据库,而是通过调用适当的WP函数),然后将该文件的所有相关缩略图上传到S3,然后删除下载的文件和生成的缩略图。
目前,没有插件可以做到这一点。
此方法的一个禁止因素是,在整个下载过程中,必须在单个web调用的持续时间内完成缩略图、上载和删除操作(即,在浏览器中,您点击一个按钮调用WordPress并启动所有这些工作),如果服务器在这么多秒的不活动后有断开连接的设置,或者php有一个设置,只在设定的时间长度内运行脚本,并且您对单个文件的处理超出了这些超时时间,该处理将被中止,您的系统上会有剩余的文件,您会向开发人员寻求帮助,认为这是他的插件,而实际上这只是一种糟糕的方式。
附录,既然你在询问mp3数据,下面是你必须做的事情。也许有些不太好的消息。
大笔刷笔划:
找到一个可以导入的插件,看看是否可以复制/修改该过程以满足您的需要找到一个执行s3://url切换的插件,看看是否可以根据自己的目的劫持它步骤1:
查看“从服务器添加”插件。class.add-from-server.php
有function handle_import_file( )
. 如果你仔细阅读,你会发现它实际上从mp3中提取元数据(调用wp_read_audio_metadata
), 所以这应该是本地文件。我认为您有两种选择:(1)您并不真正需要元数据,所以您可以修改代码来跳过它,或者(2)您有一些本地形式的元数据,而不是从mp3中提取,而是从本地源中提取。
第2步:
我使用tcs3,我不得不破解它。我想从长远来看,我只需要将它复制到我自己的插件中,这样我就不会意外地自动更新超过我的更改。总之,插件不能按原样工作,我必须编辑代码才能让它工作。
我从这一切中学到的教训是,看起来你不能只编辑表格,然后全部更改http://example.com/ 到s3://mybucket/并让它工作。
WP使用过滤器(在这种情况下,wp_get_attachment_url
) 要构建“正确”的url,请调用已在该筛选器中注册的所有人,将本地url传递给他们,并允许他们修改url。
为了让它正常工作,我必须让tcs3的代码检查它是否设置了“is\\u on\\u s3”标志,如果设置了,则需要更改URL,否则就不用管它了。不是开玩笑,他们的代码不是这样工作的。在我进行更改之前,它将所有URL更改为s3,无论它是否实际上载了文件。
我的建议是让您自己制作插件,将Add复制到服务器作为起点,(a)修改元数据的使用,(b)提供您自己的插件wp_get_attachment_url
可以判断URL是否是s3文件之一并适当更改URL的过滤器。