Wordpress使用media_sideload_image时图像URL无效


Wordpress Invalid image URL when using media_sideload_image

我使用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能够正确地使用这个我无法更改的特定url。

问题:

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

解决方案:

在过去的一个小时里,我一直面临着这个问题。在严重头痛之后,我可以使用破解方法来解决它

您所要做的就是在等于";。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能够安全地从文件模块中退出,而不会引发任何错误。

如果您在/wp-admin的上下文之外使用此函数您需要包含media.php和dependent includes。

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()的文档,请参阅注释

您也可以创建自己的函数,如以下答案