WordPress 使用 media_sideload_image 时图像 URL 无效

Luk*_*oft 4 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);
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

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

        )

    [error_data] => Array
        (
        )

)
Run Code Online (Sandbox Code Playgroud)

问题: 我怎样才能使 media_sideload_image 与这个我无法更改的特定网址正常工作。

Moo*_*oze 11

问题:

是网址的问题。Wordpress 的文件模块无法识别您提供的 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'
Run Code Online (Sandbox Code Playgroud)

这将使 URL 安全地从文件模块中退出,而不会引发任何错误。