gpt4 book ai didi

php - 使用 wp_remote_get() 函数获取图像时出错

转载 作者:搜寻专家 更新时间:2023-10-31 20:37:33 25 4
gpt4 key购买 nike

我正在使用 wp_remote_get 从 url 中获取图像并将其作为特色图像附加到帖子中。我最初能够使用来自 this 的一些帮助来做到这一点帖子和图像已成功设置为特色图片并显示在后端,但现在图像已成功设置为特色图片但仅显示图像名称(好像图像文件的路径已损坏)。
当我使用 ftp 转到图像路径时,我可以看到图像文件,但是当我尝试打开图像时,它说格式不受支持。
下面是我用来获取图片的代码

$upload_dir = wp_upload_dir();            
$image_url = $one_post->images[0];
$image_data = wp_remote_get($image_url);
//Get image and set unique file name
$filename = $new_post_id."_".$one_post->ID."_".basename($image_url);
if (wp_mkdir_p($upload_dir['path'])) {
$file = $upload_dir['path'] . '/' . $filename;
} else {
$file = $upload_dir['basedir'] . '/' . $filename;
}
file_put_contents($file, $image_data);
$wp_filetype = wp_check_filetype($filename, null);
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => sanitize_file_name($filename),
'post_content' => '',
'post_status' => 'inherit',
);
$attach_id = wp_insert_attachment($attachment, $file, $new_post_id);
require_once(ABSPATH . 'wp-admin/includes/image.php');
$attach_data = wp_generate_attachment_metadata($attach_id, $file);
wp_update_attachment_metadata($attach_id, $attach_data);
set_post_thumbnail($new_post_id, $attach_id);

如果我用文本编辑器打开图像文件,我会看到类似下面的内容

ArrayÿØÿà JFIF

编码有问题吗?
请纠正我做错了什么。

最佳答案

正如我在评论中提到的,您看到此问题是因为您使用 wp_remote_get()file_put_contents() 的方式。

我还看到您在复制某些 WordPress 功能。在下面的示例中,我重写了您的代码以利用现有的 WordPress 功能。

$image_url = $one_post->images[0];

$tmp = download_url( $image_url );

// fix filename for query strings
preg_match( '/[^\?]+\.(jpg|jpe|jpeg|gif|png)/i', $image_url, $matches );

$file_array = array(
'name' => $new_post_id . '_' . $one_post->ID . '_' . basename( $matches[0] ),
'tmp_name' => $tmp
);

// Check for download errors
if ( is_wp_error( $tmp ) ) {
@unlink( $file_array['tmp_name'] );
return false;
}

$id = media_handle_sideload( $file_array, $new_post_id );

// Check for handle sideload errors.
if ( is_wp_error( $id ) ) {
@unlink( $file_array['tmp_name'] );
return false;
}

// Set post thumbnail.
set_post_thumbnail( $new_post_id, $id );

基于 media_handle_sideload() 的 Codex 页面上给出的示例:https://codex.wordpress.org/Function_Reference/media_handle_sideload

关于php - 使用 wp_remote_get() 函数获取图像时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31368072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com