gpt4 book ai didi

php - 通过图像的 URL 在 WordPress 前端表单中上传图像

转载 作者:行者123 更新时间:2023-12-01 07:04:08 26 4
gpt4 key购买 nike

我正在使用 Board Game Geek API 来提取各种数据。我想要的一项数据是图像。

例如,以下是针对特定棋盘游戏的 API 调用: https://boardgamegeek.com/xmlapi2/thing?id=169786&stats=1

当我通过 ajax 调用获得响应时,我可以通过以下方式获取 xml 中的图像 url:

var image_url = $(data).find("image")[0].textContent;

但是:那时我被难住了。我想上传位于该网址的图像,但我不知道如何通过表单上传图像。

在 WordPress 中:我知道如何上传图像的唯一方法是图像已经存在在我的计算机上。在这种情况下,我有以下输入:

<label for='board_game_image></label>
<input type="file" name="board_game_image" id="board_game_image" multiple="false"></input>

此输入创建“选择文件”按钮以从您的计算机上传图像。提交表单后,我使用 media_handle_upload将图像保存在 uploads 目录中并创建相关的数据库记录。不幸的是:当图像存在于您的计算机上,而是存在于互联网上的某个位置(即图像通过网址存在)时,此过程似乎不起作用。

问题:当我的计算机上不存在图像时,如何通过 WordPress 前端表单上传图像?相反:我所拥有的只是图像在互联网上存在的url

最佳答案

您应该在表单中包含图像链接,

例如

var image_url = $(data).find("image")[0].textContent;
//assign the value to hidden input
$('#imgURL').val( image_url );

然后在您的表单中添加类似的内容

<input type="hidden" id="imgURL" name="imageURL">

我不确定您如何处理表单提交,但您可以执行如下操作来在提交后处理图像。

首先,将图像保存在上传文件夹中

$imgurl = $_REQUEST['imageURL']; // get the img url from the submitted data
$imginfo = pathinfo($imgurl); //get the url information
$filename = $imginfo['filename'].'.'.$imginfo['extension']; // extract the image filename

$updir = wp_upload_dir(); // get upload directory
$uploadedfile = $updir['path'] . '/' . $filename; // create upload image location & file name

$image= file_get_contents( $imgurl ); // get the image actual content
$saved = fopen($uploadedfile, 'w'); // open the image file
fwrite($saved, $image); // write image conent
fclose($saved); // close image

您的图片现已上传并存储在 wp-content uploads 文件夹中,确切位置位于 $uploadedfile

但是,该图像仍未添加到媒体库中,因为它没有任何数据库条目连接到该图像,

现在只需使用 wp_insert_attachment将该图像链接到数据库的函数,它将显示在媒体库中,

只需检查该文档,您就会看到链接 $uploadedfile 的示例文件到媒体库,您可以执行类似的操作,

$filetype = wp_check_filetype( $filename, null );

$attachment = array(
'post_mime_type' => $filetype['type'],
'post_title' => sanitize_file_name( $filename ),
'post_content' => '',
'post_status' => 'inherit'
);

$img_id = wp_insert_attachment( $attachment, $uploadedfile );
require_once( ABSPATH . 'wp-admin/includes/image.php' );
$attach_data = wp_generate_attachment_metadata( $img_id, $uploadedfile );
wp_update_attachment_metadata( $img_id, $attach_data );

关于php - 通过图像的 URL 在 WordPress 前端表单中上传图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57193992/

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