我是靠谱客的博主 现实大船,最近开发中收集的这篇文章主要介绍wordpress异步ajax上传文件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

分三步

      • 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上传文件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部