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
相关产品推荐
相关产品推荐

