You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress自定义插件无法保存外部API媒体文件并渲染的问题求助

WordPress自定义插件无法保存外部API媒体文件并渲染的问题求助

我正在开发一个WordPress自定义插件,用来从外部API拉取数据并存到数据库里——主要是找不到现成的插件能满足我的需求,才自己动手写的。目前我已经实现了get_latest_data()函数,能完成请求鉴权并获取需要的数据,也能把普通数据正常存入数据库,但在处理图片保存的时候遇到了问题:数据库里能看到文件记录,WordPress后台媒体库也显示有这个文件,但图片就是加载不出来、无法渲染。

下面是我用来保存图片的函数代码:

function save_media_as_attachment($media_url, $post_id) {

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

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

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

if (empty($media_url)) {

return false;

}

$temp_file = download_url($media_url);

if (is_wp_error($temp_file)) {

return false;

}

$file_name = basename($media_url);

$file_extension = pathinfo($file_name, PATHINFO_EXTENSION);

$post_mime_type = 'image/jpeg'; // Default to JPEG

if (strtolower($file_extension) === 'jpg' || strtolower($file_extension) === 'jpeg') {

$post_mime_type = 'image/jpeg';

} elseif (strtolower($file_extension) === 'png') {

$post_mime_type = 'image/png';

} elseif (strtolower($file_extension) === 'mp4') {

$post_mime_type = 'video/mp4';

}

$attachment = array(

'post_title' => sanitize_file_name($file_name),

'post_content' => '',

'post_status' => 'inherit',

'post_mime_type' => $post_mime_type,

);

$attachment_id = wp_insert_attachment($attachment, $temp_file, $post_id);

if (!is_wp_error($attachment_id)) {

$attachment_data = wp_generate_attachment_metadata($attachment_id, $temp_file);

wp_update_attachment_metadata($attachment_id, $attachment_data);

update_post_meta($attachment_id, '_wp_attached_file', $file_name);

@unlink($temp_file);

return $attachment_id;

}

@unlink($temp_file);

return false;

}

我已经排查过这些点:

  • 从API获取的媒体文件本身是正常的,能直接打开查看
  • 检查过文件的MIME类型设置,看起来没问题
  • 也确认了服务器的文件权限是正常的

有没有大佬能帮我看看哪里出问题了?

备注:内容来源于stack exchange,提问作者I. Antonov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 10:37:59