Пользователи WordPress в datatables не работают - PullRequest
0 голосов
/ 17 сентября 2018

Я делаю плагин для отображения всей пользовательской информации в DataTables , но мне не удалось. У меня около 20 тысяч пользователей, поэтому я не могу использовать обычный метод таблиц, поэтому я использую метод ajax. Пожалуйста, помогите мне. Я получаю ответ Ajax, как {"draw":0,"recordsTotal":0,"recordsFiltered":0,"data":[]}

Это моя структура таблицы

 <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 голосов
/ 17 сентября 2018

Попробуйте этот код

Ваш запрос неверен

 <?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' );
...