- changed wp-admin > Users page;

* updated filters by status, avoid slow queries for getting users count;
* updated bulk-actions for changing statuses (moved to WP native dropdown)
* separate handlers for changing user statuses on wp-admin and frontend (partially implemented);
* created class UM()->common()->users() to handle user statuses in more clear format;
* deprecated old hooks and old functions
This commit is contained in:
Mykyta Synelnikov
2024-09-20 18:41:08 +03:00
parent 2c0478757f
commit 512dc53a18
22 changed files with 1250 additions and 1020 deletions
+13
View File
@@ -23,6 +23,7 @@ if ( ! class_exists( 'um\ajax\Init' ) ) {
$this->forms();
$this->pages();
$this->secure();
$this->users();
}
/**
@@ -60,5 +61,17 @@ if ( ! class_exists( 'um\ajax\Init' ) ) {
}
return UM()->classes['um\ajax\secure'];
}
/**
* @since 2.8.7
*
* @return Users
*/
public function users() {
if ( empty( UM()->classes['um\ajax\users'] ) ) {
UM()->classes['um\ajax\users'] = new Users();
}
return UM()->classes['um\ajax\users'];
}
}
}
+56
View File
@@ -0,0 +1,56 @@
<?php
namespace um\ajax;
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Class Users
*
* @package um\ajax
*/
class Users {
public function __construct() {
add_action( 'wp_ajax_um_get_users', array( $this, 'get_users' ) );
}
public function get_users() {
UM()->admin()->check_ajax_nonce();
$search_request = ! empty( $_REQUEST['search'] ) ? sanitize_text_field( $_REQUEST['search'] ) : '';
$page = ! empty( $_REQUEST['page'] ) ? absint( $_REQUEST['page'] ) : 1;
$per_page = 20;
$args = array(
'fields' => array( 'ID', 'user_login' ),
'paged' => $page,
'number' => $per_page,
);
if ( ! empty( $search_request ) ) {
$args['search'] = '*' . $search_request . '*';
}
$args = apply_filters( 'um_get_users_list_ajax_args', $args );
$users_query = new \WP_User_Query( $args );
$users = $users_query->get_results();
$total_count = $users_query->get_total();
if ( ! empty( $_REQUEST['avatar'] ) ) {
foreach ( $users as $key => $user ) {
$url = get_avatar_url( $user->ID );
$users[ $key ]->img = $url;
}
}
wp_send_json_success(
array(
'users' => $users,
'total_count' => $total_count,
)
);
}
}