Pages

Showing posts with label users. Show all posts
Showing posts with label users. Show all posts

Thursday, January 4, 2018

get all users by first character in IONIC custom Wordpress API Function

PHP FILE


/**
* Users Listing
* Users Custom Fields, Pagination, Searching User by its first Character
*/

add_action('rest_api_init', 'wpc_register_wp_api_endpoints');
function wpc_register_wp_api_endpoints()
{
register_rest_route('userlisting', '/search', array(
'methods' => 'GET',
'callback' => 'wpc_somename_search_callback',
));
}

function wpc_somename_search_callback($request_data)
{

$parameters = $request_data->get_params();
$usersdata = array();

if (!isset($parameters['per_page']) || empty($parameters['per_page']))
return array('error' => 'Page No empty ');
$number = $parameters['per_page'];
if (isset($parameters['page']) || !empty($parameters['page'])) {
$paged = $parameters['page'];
} else {
$paged = 1;
}
if (isset($parameters['s']) || !empty($parameters['s'])) {
$search = esc_attr($parameters['s']);
} else {
$search = '';
}

$args = array(
'role' => 'author',
'exclude' => array('administrator'),
'orderby' => 'login',
'order' => 'ASC',
'search' => '',
'meta_query' => ($search!='') ? array(array('key' => 'nickname', 'value' => '^'.$search.'.*', 'compare' => 'REGEXP')) : '',
'offset' => $paged ? ($paged - 1) * $number : 1,
'number' => $number,
'fields' => array('ID','user_nicename','display_name'),
'who' => '',
);
$users = get_users($args);

foreach ($users as $user) {

$usersdata['users'][]['authormeta'] = array('ID' => $user->ID, 'display_name' => $user->display_name,
'authormetadata' => array(
'cupp_upload_meta' => get_user_meta($user->ID, 'cupp_upload_meta', true),
'description' => get_user_meta($user->ID, 'description', true),
'nickname' => get_user_meta($user->ID, 'nickname', true)
), 'arguments'=> $args,
);

}
return $usersdata;
}





/***************************************************************
*Ionic 3 Function Call
**/

// CALL the API

this.http.get('http://yourwebsite.com/wp-json/userlisting/search?per_page=15&s=Z')
.map(res => res.json())
.subscribe(data => {
// we've got back the raw data, now generate the core schedule data
console.log(data);
this.authors = data.users;
});