wordpress异步ajax上传文件

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');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值