数据表中的WordPress用户不起作用



我正在制作一个插件来显示数据表中的所有用户信息,但我失败了。我有大约 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' );

试试这段代码

您的查询错误

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

最新更新