Como obter o nome de usuário do WordPress no formato Array

11

Quero criar uma função de preenchimento automático no WordPress. Quero um campo de pesquisa onde o nome de usuário possa ser pesquisado. Estou usando a seguinte interface do usuário do 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>

Meu problema é que não consigo obter a lista de nomes de usuários nesse formato - array('John', 'Rogers', 'Paul', 'Amanda', 'Peter');Como faço para obtê-lo?

Minesh
fonte

Respostas:

16

As outras respostas estão corretas, mas é possível obter a mesma coisa com menos código usando wp_list_pluck():

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

wp_list_pluck()usado dessa maneira obterá o display_namecampo de todos os usuários em uma matriz sem precisar fazer um loop.

Jacob Peattie
fonte
2
+1. Além disso, se o código menos é o alvo, então por que não: $user_names = wp_list_pluck( get_users(), 'display_name' );;)
Fayaz
11
Sim, isso funcionaria. Acabei de separá-los para maior clareza e consistência com as outras respostas que eu estava referenciando. Embora eu provavelmente os deixe separados em meu próprio código, não gosto de usar funções como argumentos.
Jacob Peattie
3

Veja a get_users()função.

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

E você obterá a matriz semelhante à seguinte:

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

Tenho certeza de que você deseja excluir administradores, nomes de pedidos e assim por diante. Portanto, consulte a documentação para descobrir mais get_users()argumentos.

Max Yudin
fonte
3

A get_usersfunção fornecerá uma matriz de objetos de usuário, a partir da qual você pode extrair uma matriz de nomes de usuário. Como isso:

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

Agora $user_namesé uma matriz com nomes de login. Você pode, claro, também usam user_nicename, last_nameou qualquer informação está disponível no wp_userobjeto

cjbj
fonte