Pages

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;
});