Wordpress使用media_sideload_image时出现无效的图片网址

时间:2016-05-11 08:32:58

标签: php wordpress

我正在使用wordpress功能 media_sideload_image 从以下外部链接上传图片:

   $url = 'http://pinnaclepublic.pinewoodsa.co.za/vehicles/plugins/ViewImage.aspx?guid=F92A44F3-71AC-4B2C-8BC4-8CC53578B722&VehicleId=101887&ImageNumber=1&Size=3';
   $post_id = 101;

   media_sideload_image ($url,$post_id);

但我收到错误:

WP_Error Object
(
    [errors] => Array
        (
            [image_sideload_failed] => Array
                (
                    [0] => Invalid image URL
                )

        )

    [error_data] => Array
        (
        )

)

问题: 如何制作media_sideload_image,使用我无法更改的特定网址正常工作。

2 个答案:

答案 0 :(得分:2)

问题:

网址有问题。 Wordpress 的 file 模块无法识别您提供的 URL 中的任何文件扩展名。因此抛出这个错误。 看看这个函数的源代码https://developer.wordpress.org/reference/functions/media_sideload_image/

解决方案:

过去一个小时我一直在面对这个问题。在严重头痛之后,我能够使用 hack 解决它。

<块引用>

你所要做的就是在末尾附加一些随机的查询参数 URL 等于“.jpeg”或“.png”。

示例:

$url = 'http://pinnaclepublic.pinewoodsa.co.za/vehicles/plugins/ViewImage.aspx?guid=F92A44F3-71AC-4B2C-8BC4-8CC53578B722&VehicleId=101887&ImageNumber=1&Size=3';
$url_with_pseudo_extension = $url . '?ext=.jpeg'

这将使 URL 安全地从文件模块中走出来,而不会抛出任何错误。

答案 1 :(得分:0)

如果您在/wp-admin的上下文之外使用此功能 你需要包括media.php和依赖包含。

require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');

请参阅media_sideload_image()

文档的说明

您还可以创建自己的功能,例如answer