数据表中的WordPress用户无法正常工作

时间:2018-09-17 10:09:53

标签: ajax wordpress datatables

我正在制作一个插件来显示DataTables中的所有用户信息,但失败了。我有大约20k用户,所以我不能使用普通表方法,这就是为什么我使用ajax方法的原因。请帮我。 我收到像{"draw":0,"recordsTotal":0,"recordsFiltered":0,"data":[]}

这样的ajax响应

这是我的表格结构

 <table id="user_table" class="display table table-striped table-bordered dataTable" style="width:100%">
        <thead class="user-table">
            <tr>
            <th>Email</th>
            <th>Name </th>
            <th>Url</th>
            <th>nickname</th>
            <th>description</th>
            </tr>
        </thead>
        <tbody>
        </tbody>
    </table>

我的脚本

jQuery(document).ready(function($){
    var ajaxurl =  USERAjax.wpajaxusersearch;
    var dataTable = $('#user_table').DataTable({  
       "processing":true,  
       "serverSide":true,  
       "order":[],  
       "ajax":{  
            url: ajaxurl,  
            type:"POST"  
       },  
       "columnDefs":[  
            {  
                 "targets":[0, 3, 4],  
                 "orderable":false,  
            },  
       ],  
  });
});

还添加了

之类的本地化脚本
 wp_localize_script( 'jquery', 'USERAjax', array('wpajaxusersearch' => admin_url( 'admin-ajax.php?action=wpajaxusersearch' )) );

和带有ajax响应的数据获取功能

 <?php 
function wpajaxusersearch(){ 

    $request=$_REQUEST;

    global $wpdb;
    $sort= "user_registered";

    //Build the custom database query to fetch all user IDs
    $all_users_id = $wpdb->get_results("SELECT $wpdb->users.ID FROM $wpdb->users ORDER BY %s ASC ", $sort );

    $totalData=mysqli_num_rows($all_users_id);

    $data=array();
    foreach ( $all_users_id as $i_users_id ) {

            $user = get_userdata( $i_users_id );

            $email          = $user->user_email;
            $user_fullname      =$user->first_name . ' ' . $user->last_name;
            $user_url           =$user->user_url;
            $user_nickname      =$user->nickname;
            $user_profile       =$user->description;
                $sub_array = array();  
                    $sub_array[] = $email;  
                    $sub_array[] = $user_fullname;  
                    $sub_array[] = $user_url;  
                    $sub_array[] = $user_nickname;   
                    $sub_array[] = $user_profile;    
               $data[] = $sub_array; 
    }

    $json_data=array(
        "draw"              =>  intval($_POST["draw"]),
        "recordsTotal"      =>  intval($totalData),
        "recordsFiltered"   =>  intval($totalData),
        "data"              =>  $data
    );

    echo json_encode($json_data);
    wp_die(); //to remove that 0 response
}
add_action( 'wp_ajax_wpajaxusersearch', 'wpajaxusersearch' );
add_action( 'wp_ajax_nopriv_wpajaxusersearch', 'wpajaxusersearch' );

1 个答案:

答案 0 :(得分:1)

尝试此代码

您的查询有误

 <?php 
    function wpajaxusersearch(){ 

    $request=$_REQUEST;

    global $wpdb;
    $sort= "user_registered";

    //Build the custom database query to fetch all user IDs
    $all_users_id = $wpdb->get_results("SELECT $wpdb->users.ID FROM $wpdb->users ORDER BY $sort ASC " );

    $totalData=$wpdb->num_rows;

    $data=array();
    foreach ( $all_users_id as $i_users_id ) {

            $user = get_userdata( $i_users_id->ID);

            $email          = $user->user_email;
            $user_fullname      =$user->first_name . ' ' . $user->last_name;
            $user_url           =$user->user_url;
            $user_nickname      =$user->nickname;
            $user_profile       =$user->description;
                $sub_array = array();  
                    $sub_array[] = $email;  
                    $sub_array[] = $user_fullname;  
                    $sub_array[] = $user_url;  
                    $sub_array[] = $user_nickname;   
                    $sub_array[] = $user_profile;    
               $data[] = $sub_array; 
    }

    $json_data=array(
        "draw"              =>  intval($_POST["draw"]),
        "recordsTotal"      =>  intval($totalData),
        "recordsFiltered"   =>  intval($totalData),
        "data"              =>  $data
    );

    echo json_encode($json_data);
    wp_die(); //to remove that 0 response
}
add_action( 'wp_ajax_wpajaxusersearch', 'wpajaxusersearch' );
add_action( 'wp_ajax_nopriv_wpajaxusersearch', 'wpajaxusersearch' );