WordPressユーザー名を配列形式で取得する方法


11

WordPressでオートコンプリート機能を作成したい。ユーザー名を検索できる検索フィールドが必要です。以下のJQuery UIを使用しています。

<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>

私の問題は、この形式でユーザー名のリストを取得できないことです- array('John', 'Rogers', 'Paul', 'Amanda', 'Peter');どうすれば取得できますか?

回答:


16

他の答えは正しいですが、以下を使用してより少ないコードで同じことを達成することが可能ですwp_list_pluck()

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

wp_list_pluck()このように使用display_nameすると、ループを実行する必要なく、配列内のすべてのユーザーのフィールドが取得されます。


2
+1。また、より少ないコードがターゲットである場合は、なぜ$user_names = wp_list_pluck( get_users(), 'display_name' );
ですか

1
はい、それはうまくいくでしょう。明確にし、参照している他の回答との一貫性を保つために、それらを分離しました。私はおそらく自分のコードでそれらを別々にしておくでしょうが、関数を引数として使用するのは好きではありません。
Jacob Peattie

3

get_users()関数を見てください。

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

そして、次のような配列が得られます。

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

管理者や注文名などを除外したいと思うでしょう。したがって、ドキュメントを参照して、より多くのget_users()引数を見つけてください。


3

このget_users関数はユーザーオブジェクトの配列を提供し、そこからユーザー名の配列を抽出できます。このような:

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

今すぐ$user_namesログイン名を持つ配列です。あなたは、もちろんオフ、また使用することができuser_nicenamelast_nameまたは利用可能であるものは何でもインフォwp_userオブジェクト

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.