-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
REST API: Support search_columns argument in the user endpoint
- Loading branch information
1 parent
8c34d91
commit aad1b37
Showing
4 changed files
with
67 additions
and
1 deletion.
There are no files selected for viewing
64 changes: 64 additions & 0 deletions
64
lib/compat/wordpress-6.8/class-gutenberg-rest-user-controller.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
<?php | ||
|
||
/** | ||
* Add search_columns parameter to users endpoint parameters | ||
* | ||
* @param array $query_params JSON Schema-formatted collection parameters. | ||
* @return array Updated collection parameters | ||
*/ | ||
function gutenberg_add_search_columns_param( $query_params ) { | ||
$query_params['search_columns'] = array( | ||
'default' => array(), | ||
'description' => __( 'Array of column names to be searched.' ), | ||
'type' => 'array', | ||
'items' => array( | ||
'enum' => array( 'email', 'name', 'id', 'username', 'slug' ), | ||
'type' => 'string', | ||
), | ||
); | ||
|
||
return $query_params; | ||
} | ||
|
||
add_filter( 'rest_user_collection_params', 'gutenberg_add_search_columns_param', 10, 1 ); | ||
|
||
/** | ||
* Modify user query based on search_columns parameter | ||
* | ||
* @param array $prepared_args Array of arguments for WP_User_Query. | ||
* @param WP_REST_Request $request The REST API request. | ||
* @return array Modified arguments | ||
*/ | ||
function gutenberg_modify_user_query_args( $prepared_args, $request ) { | ||
if ( $request->get_param( 'search' ) && $request->get_param( 'search_columns' ) ) { | ||
$search_columns = $request->get_param( 'search_columns' ); | ||
|
||
// Validate search columns | ||
$valid_columns = isset( $prepared_args['search_columns'] ) | ||
? $prepared_args['search_columns'] | ||
: array( 'ID', 'user_login', 'user_nicename', 'user_email', 'user_url', 'display_name' ); | ||
$search_columns_mapping = array( | ||
'id' => 'ID', | ||
'username' => 'user_login', | ||
'slug' => 'user_nicename', | ||
'email' => 'user_email', | ||
'name' => 'display_name', | ||
); | ||
$search_columns = array_map( | ||
function ( $column ) use ( $search_columns_mapping ) { | ||
return isset( $search_columns_mapping[ $column ] ) | ||
? $search_columns_mapping[ $column ] | ||
: $column; | ||
}, | ||
$search_columns | ||
); | ||
$search_columns = array_intersect( $search_columns, $valid_columns ); | ||
|
||
if ( ! empty( $search_columns ) ) { | ||
$prepared_args['search_columns'] = $search_columns; | ||
} | ||
} | ||
|
||
return $prepared_args; | ||
} | ||
add_filter( 'rest_user_query', 'gutenberg_modify_user_query_args', 10, 2 ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters