Jak uzyskać nazwę użytkownika WordPress w formacie Array

11

Chcę utworzyć funkcję autouzupełniania w WordPress. Chcę pola wyszukiwania, z którego można wyszukać nazwę użytkownika . Korzystam z następującego interfejsu użytkownika 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>

Mój problem polega na tym, że nie jestem w stanie uzyskać listy nazw użytkowników w tym formacie - array('John', 'Rogers', 'Paul', 'Amanda', 'Peter');jak to zrobić?

Minesh
źródło

Odpowiedzi:

16

Inne odpowiedzi są poprawne, ale można osiągnąć to samo przy mniejszym kodowaniu, używając wp_list_pluck():

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

wp_list_pluck()użyty w ten sposób otrzyma display_namepole wszystkich użytkowników w tablicy bez potrzeby wykonywania pętli.

Jacob Peattie
źródło
2
+1. Ponadto, jeśli celem jest mniej kodu, dlaczego nie $user_names = wp_list_pluck( get_users(), 'display_name' );
:;
1
Tak, to by zadziałało. Właśnie je rozdzieliłem dla jasności i spójności z innymi odpowiedziami, do których się odnosiłem. Chociaż prawdopodobnie zostawiłbym je osobno w swoim własnym kodzie, nie lubię używać funkcji jako argumentów.
Jacob Peattie
3

Spójrz na get_users()funkcję.

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

Otrzymasz tablicę podobną do następującej:

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

Jestem pewien, że będziesz chciał wykluczyć administratorów, nazwy zamówień i tak dalej. Więc spójrz do dokumentacji, aby znaleźć więcej get_users()argumentów.

Max Yudin
źródło
3

Ta get_usersfunkcja daje tablicę obiektów użytkownika, z których można wyodrębnić tablicę nazw użytkowników. Lubię to:

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

Teraz $user_namesjest tablica z nazwami logowania. Można się oczywiście również użyć user_nicename, last_namelub cokolwiek informacja jest dostępna w wp_userobiekcie

cjbj
źródło