Cómo obtener el nombre de usuario de WordPress en formato de matriz

11

Quiero crear una función de Autocompletar en WordPress. Quiero un campo de búsqueda desde donde se pueda buscar el nombre de usuario . Estoy usando la siguiente interfaz de usuario de JQuery.

<label>Users</label>

<input type="text" name="user_name" id="user-name" />

<?php

$get_arr_user = array('John', 'Rogers', 'Paul', 'Amanda', 'Peter');

?>

<script>

jQuery(document).ready(function($) {                                
var availableTags = <?php echo json_encode($get_arr_user); ?>;
$( "#user-name" ).autocomplete({
source: availableTags
});
});

</script>

Mi problema es que no puedo obtener la lista de nombres de usuario en este formato. array('John', 'Rogers', 'Paul', 'Amanda', 'Peter');¿Cómo puedo obtener eso?

Minas
fuente

Respuestas:

16

Las otras respuestas son correctas, pero es posible lograr lo mismo con menos código usando wp_list_pluck():

$users = get_users();
$user_names = wp_list_pluck( $users, 'display_name' );

wp_list_pluck()usado de esa manera obtendrá el display_namecampo de todos los usuarios en una matriz sin necesidad de hacer un ciclo.

Jacob Peattie
fuente
2
+1. Además, si el objetivo es menos código, entonces por qué no $user_names = wp_list_pluck( get_users(), 'display_name' );
:;
1
Sí, eso funcionaría. Simplemente los separé por claridad y consistencia con las otras respuestas a las que hacía referencia. Aunque probablemente los dejaría separados en mi propio código, no me gusta usar funciones como argumentos.
Jacob Peattie
3

Mira la get_users()función.

<?php

$users = get_users();

foreach( $users as $user ) {
    // get user names from the object and add them to the array
    $get_arr_user[] = $user->display_name;
}

Y obtendrá la matriz similar a la siguiente:

Array
(
    [0] => John Doe
    [1] => Jane Doe
    [2] => Baby Doe
)

Estoy bastante seguro de que querrá excluir administradores, nombres de pedidos, etc. Entonces, mira la documentación para descubrir más get_users()argumentos.

Max Yudin
fuente
3

La get_usersfunción le dará una matriz de objetos de usuario, desde la cual puede extraer una matriz de nombres de usuario. Me gusta esto:

$args = array(); // define in case you want not all users but a selection
$users = get_users( $args );
$user_names = array();
foreach ( $users as $user ) {
    $user_names[] = $user->user_login;
}

Ahora $user_nameses una matriz con nombres de inicio de sesión. Puede, por supuesto, también se utiliza user_nicename, last_nameo lo que sea información está disponible en el wp_userobjeto

cjbj
fuente