wake-up-neo.net

So können wir die Benutzer-ID anhand ihres Anzeigenamens ermitteln

Ich habe den Benutzer display_name und möchte damit die id dieses Benutzers erhalten.

Wie kann ich die Benutzer-ID abrufen?

1
Adi

Sie können die folgende Funktion verwenden:

function get_user_id_by_display_name( $display_name ) {
    global $wpdb;

    if ( ! $user = $wpdb->get_row( $wpdb->prepare(
        "SELECT `ID` FROM $wpdb->users WHERE `display_name` = %s", $display_name
    ) ) )
        return false;

    return $user->ID;
}

Dies ist derselbe Code, den get_user_by() verwendet, aber da diese Funktion nur ID, slug, email oder login erlaubt, müssen wir eine neue Funktion erstellen.

3
Mike Madern

Ich glaube nicht, dass dies erwähnt wurde, wahrscheinlich weil es Anzeigename sowie E-Mail-Adresse, URL, ID und Benutzername durchsucht. Dies ist mehr als erforderlich, hat aber für meinen speziellen Anwendungsfall gut funktioniert.

function get_user_id_by_search( $search_term ) {
    $user = get_users(array('search' =>  $search_term));

    if (!empty($user))
        return $user[0]->ID;
}
1
Peter Bushnell

Verwenden Sie WP_User_Query .

$args= array(
  'search' => 'Display Name', // or login or nicename in this example
  'search_fields' => array('user_login','user_nicename','display_name')
);
$user = new WP_User_Query($args);

Habe gerade eine Frage beantwortet, die dieser sehr ähnlich ist: Wie wir die Autoren-ID anhand ihres Namens ermitteln können

1
s_ha_dum

Völlig ungetestet, aber ich kann nichts im Code sehen, warum es nicht funktionieren würde, get_users() mit einer Meta-Abfrage zu verwenden:

$users = get_users( array(
    'meta_key' => 'display_name',
    'meta_value' => 'John Doe'
) );

$user = ( ( isset( $users[0] ) ? $users[0] : false );

$user_id = ( $user ? $user->ID : false );
1
Chip Bennett

bei der WordPress-Benutzerabfrage ist der angezeigte Name in der Suchspalte standardmäßig nicht zulässig, auch wenn er hinzugefügt wurde. Hier ist eine Lösung: http://manchumahara.com/2014/04/03/search-user-by-display-name- in-wordpress-sitewide/

Beispiel:

$args= array(
  'search' => 'Display Name', // or login or nicename in this example
  'search_fields' => array('user_login','user_nicename','display_name')
);
$user = new WP_User_Query($args);

Die obige Abfrage wird für display_name nicht gefunden

sie müssen diesen Filter verwenden

add_filter('user_search_columns', 'user_search_columns_bd' , 10, 3);

function user_search_columns_bd($search_columns, $search, $this){

    if(!in_array('display_name', $search_columns)){
        $search_columns[] = 'display_name';
    }
    return $search_columns;
}
0
Manchumahara