【问题标题】:Wordpress: search users using 'first_name' and 'last_name'?Wordpress:使用“first_name”和“last_name”搜索用户?
【发布时间】:2020-02-18 11:10:19
【问题描述】:

更新:我的意思是在 /wp-admin/users.php 的管理员用户仪表板中搜索用户

有没有办法使用“first_name”和“last_name”搜索用户?

我找到了这个插件,但根本不工作:https://wordpress.org/plugins/full-name-search-in-wp-admin/

我也发现了这个功能,但在我的网站上都没有。我需要用钩子/动作调用函数吗?:

function search_users($search_term){

    global $wpdb;
    $the_users = $wpdb->get_results("SELECT DISTINCT $wpdb->users.* FROM $wpdb->users INNER JOIN $wpdb->usermeta um1 ON um1.user_id = $wpdb->users.ID JOIN $wpdb->usermeta um2 ON um2.user_id = $wpdb->users.ID WHERE (um1.meta_key = 'uRPhICRS_capabilities' AND um1.meta_value LIKE '%agent%') AND ((um2.meta_key = 'first_name' OR um2.meta_key = 'last_name') AND um2.meta_value LIKE '%".$search_term."%');");

    if(!empty($the_users)){
        return $the_users;
    }
    else{
        return false;
    }

}

【问题讨论】:

  • 你可以试试这个。工作正常 $user = get_user_by('login', 'user_login_name');print_r($user);

标签: wordpress


【解决方案1】:

以下两种方式:

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) 如果您想从 username、user_nicename、user_email、firstname 或 lastname 中检查用户,请使用以下代码:

//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 );

【讨论】:

【解决方案2】:

您可以使用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/

【讨论】:

  • 我刚刚更新了我的问题。 更新:我的意思是在 /wp-admin/users.php 的 Admin User Dashboard 中搜索用户 你能包装你的代码以添加到 functions.php 中吗?这个函数是怎么调用的?有钩子/动作?
猜你喜欢
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 2017-10-12
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
  • 1970-01-01
相关资源
最近更新 更多