Wordpress: поиск пользователей с использованием «first_name» и «last_name»? - PullRequest
0 голосов
/ 18 февраля 2020

ОБНОВЛЕНИЕ: я имею в виду поиск пользователя в панели пользователя Admin по адресу /wp-admin/users.php

Есть ли способ поиска пользователей с использованием 'first_name' и 'last_name'?

Я нашел этот плагин, но не работал вообще: https://wordpress.org/plugins/full-name-search-in-wp-admin/

Я также нашел эту функцию, но ни одна из них не работает на моем сайте. Нужно ли вызывать функцию с помощью ловушки / действия?

1013 *

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

Два способа следующим образом:

1) Если вы хотите проверить соответствие строки по имени или фамилии, будет работать следующее:

$users_query = new WP_User_Query(
  array(
    'meta_query' => array(
    'relation' => 'OR',
      array(
        'key' => 'first_name',
        'value' => $str,
        'compare' => 'LIKE'
      ),
    array(
        'key' => 'last_name',
        'value' => $str,
        'compare' => 'LIKE'
      )
    )
  )
 );

$users = $users_query->get_results();

2) Если вы хотите чтобы проверить пользователя по имени пользователя, user_nicename, user_email, имени или фамилии, используйте следующий код:

//search from the user table 
$users_query_table = new WP_User_Query(
  array(
    'search' => "*{$str}*",
    'search_columns' => array(
    'user_login',
    'user_nicename',
    'user_email',
  ),
) );
$users_via_table = $users_query_table->get_results();

//search from the usermeta
$users_query_meta = new WP_User_Query(
  array(
    'meta_query' => array(
    'relation' => 'OR',
      array(
        'key' => 'first_name',
        'value' => $str,
        'compare' => 'LIKE'
      ),
    array(
        'key' => 'last_name',
        'value' => $str,
        'compare' => 'LIKE'
      )
    )
  )
 );

$users_via_meta = $users_query_meta->get_results();

// Merge both result.. 
$combined_users = array_merge( $users_via_table, $users_via_meta );

// Get unique user
$users = array_unique( $combined_users, SORT_REGULAR );
0 голосов
/ 18 февраля 2020

Вы можете использовать WP_User_Query.

Пример:

// The search term
$search_term = 'Ross';

// WP_User_Query arguments
$args = array (
    'role' => 'reporter',
    'order' => 'ASC',
    'orderby' => 'display_name',
    'search' => '*'.esc_attr( $search_term ).'*',
    'meta_query' => array(
        'relation' => 'OR',
        array(
            'key'     => 'first_name',
            'value'   => $search_term,
            'compare' => 'LIKE'
        ),
        array(
            'key'     => 'last_name',
            'value'   => $search_term,
            'compare' => 'LIKE'
        ),
        array(
            'key' => 'description',
            'value' => $search_term ,
            'compare' => 'LIKE'
        )
    )
);

// Create the WP_User_Query object
$wp_user_query = new WP_User_Query($args);

https://developer.wordpress.org/reference/classes/wp_user_query/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...