- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!