概述
分三步
- 1.建立表单
- 2.js获取表单数据,用formData打包,然后用ajax提交到admin-ajax.php(wordpress固定用法),最后通过php自定义函数php_upload处理
- 3.php_upload函数放在functions.php里面,代码如下
1.建立表单
<form id="biaoge1" method="post" enctype="multipart/form-data">
<input name="usr" type="text">
<input type="radio" name="xuyao" value="1" />
<input type="radio" name="xuyao" value="0" />
<input id="file" type="file" name="icon" />
</form>
<button onclick="js_upload();" type="button" class="btn">确定上传</button>
2.js获取表单数据,用formData打包,然后用ajax提交到admin-ajax.php(wordpress固定用法),最后通过php自定义函数php_upload处理
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<?php $admin_url=admin_url( 'admin-ajax.php' );?>
<script>
var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";//wp异步全部都提交到这里
function js_upload(){
var formData = new FormData(document.getElementById("biaoge1"));
formData.append('action','php_upload');//wp必须设置这个,才能把参数传递给php_upload函数
$.ajax({
type:'post',
url:ajaxurl,
data:formData,
processData: false,
contentType: false,
success:function(result){
},
error:function(data){
}
})
}
</script>
3.php_upload函数放在functions.php里面,代码如下
function php_upload(){
if($_POST){
$usr = array();
$usr['usr'] = $_POST['usr'];//input的name属性,来区分不同的input
$usr['xuyao'] = $_POST['xuyao'];
// 创建文章对象
$my_post = array(
'post_title' => '表格1用户信息',
'post_content' => '表格1',
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array(52)
);
// 插入文章到数据库
$post_id = wp_insert_post( $my_post, $wp_error );
update_field('mingzi',$usr['usr'],$post_id);//这里是更新文章的自定义字段(mingzi),acf高级自定义字段插件的函数
if($usr['xuyao'] == 1){
update_field('fuwu','需要',$post_id);
}
else{
update_field('fuwu','不需要',$post_id);
}
}
if($_FILES){
$file = $_FILES['icon'];
$wp_upload_dir = wp_upload_dir();
// 将上传的图片文件移动到上传目录
$basename = $file['name'];
$filename = $wp_upload_dir['path'].'/'.$basename;
rename($file['tmp_name'], $filename);
$attachment = array(
'guid' => $wp_upload_dir['url'] . '/' . $basename,
'post_mime_type' => $file['type'],
'post_title' => preg_replace( '/.[^.]+$/', '', $basename ),
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $filename, $post_id);//这是wp内置的上传附件的函数
require_once( ABSPATH . 'wp-admin/includes/image.php' );
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );
update_field('file',$attach_id,$post_id);//这里是更新文章的自定义字段(文件),acf高级自定义字段插件的函数
add_post_meta($post_id,fileurl,$file_arr['url']);//这里是更新文章的自定义字段的值,跟上一行一样道理,上面是用插件来定义字段,下面是用wp内置函数实现
}
die();
}
add_action('wp_ajax_php_upload', 'php_upload');
add_action('wp_ajax_nopriv_php_upload', 'php_upload');
最后
以上就是现实大船为你收集整理的wordpress异步ajax上传文件的全部内容,希望文章能够帮你解决wordpress异步ajax上传文件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复