如何在WordPress用户中按名字和/或姓氏搜索?

ss2ws0br  于 2022-11-28  发布在  WordPress
关注(0)|答案(5)|浏览(185)

默认情况下,WordPress不允许按名字和姓氏搜索用户列表。如何在WordPress中启用此功能,以便我可以搜索任何人的名字并查看他们的帐户?

csbfibhn

csbfibhn1#

实现这一点的唯一方法是避免编写代码或通过数据库查询执行搜索(我不建议这样做)是通过一个插件。在标准库中有一个免费的插件,User First Name / Full Name Search,可以为你做这件事。它可以通过你的管理面板的插件下的添加新功能来安装,因为它在WordPress目录中。与名字所暗示的不同,它也允许按姓氏搜索。

qni6mghb

qni6mghb2#

是的,有两种方法。
1.您可以使用此Plugin
1.您可以使用此Code

ego6inou

ego6inou3#

此插件允许用户按以下方式进行搜索:* * 用户名、名字、姓氏、电子邮件或公司名称**。

    • 搜索编辑**用户的最简单方法是使用此插件。

https://wordpress.org/plugins/robust-user-search/

zvokhttg

zvokhttg4#

function getUsersBySurname($surname)
{
    global $wpdb;

    $users = $wpdb->get_results(
        $wpdb->prepare(
            "SELECT * FROM wp_users as user 
                LEFT JOIN wp_usermeta as meta on meta.user_id = user.id 
                WHERE meta.meta_key = 'last_name' AND meta.meta_value = %s",
            $surname),
        ARRAY_A);

    return $users;
}

这个函数将返回一个用户数组。所以你可以像这样使用它。它将打印每个姓为"Sanchez"的用户电子邮件

$users = getUsersBySurname("Sanchez");
if (!empty($users)) {
    foreach ($users as $user) {
        printf('<p>%s</p>', $user['user_email']);
    }
}
jxct1oxe

jxct1oxe5#

使用WP内核get_users函数的编程解决方案。

$search = 'name-looking-for';
$users = get_users( [
    'meta_query' => [
        'relation' => 'OR',
        [
            'key'     => 'first_name',
            'value'   => $search,
            'compare' => 'LIKE',
        ],
        [
            'key'     => 'last_name',
            'value'   => $search,
            'compare' => 'LIKE',
        ],
    ],
] );

如果您希望搜索仅从名称的开头开始,则为额外的点。
例如,如果您搜索"ada",并希望获得名为"adam"的用户,但不希望获得名为"vadam"的用户。

/**
 * Strip the leading "%" from the LIKE condition so always start with the first
 * letter in a user's first or last name.
 */
add_filter( 'get_meta_sql', function( $sql ) use ( $search ) {
    global $wpdb;
    // Convert the "%" character into the queries' placeholder.
    $wildcard = \str_replace( "'", '', $wpdb->prepare( '%s', '%' ) );
    return \str_replace( "LIKE '{$wildcard}{$search[0]}", "LIKE '{$search[0]}", $sql );
} );

相关问题