php WordPress WP_用户查询搜索名字&姓氏

wyyhbhjk  于 2023-01-24  发布在  PHP
关注(0)|答案(1)|浏览(119)

WP_User_Query按名字和姓氏搜索不起作用。搜索仅返回姓氏= Doe的用户。按名字筛选不起作用

$search_string_user = "John Doe";
    $name_array = preg_split("/[\s,]+/", $search_string_user);
    $users = new WP_User_Query(array(
        'meta_query' => array(
            'relation' => 'OR',
            array(
                'key' => 'first_name',
                'value' => $name_array[0],
                'compare' => 'LIKE'
            ),
            array(
                'key' => 'last_name',
                'value' => $name_array[1],
                'compare' => 'LIKE'
            ),
        )
    ));
pvcm50d1

pvcm50d11#

这并没有解决原来的问题***,但***这篇文章确实有一个完美的标题。
修改用户搜索Wordpress admin,包括名字和姓氏,然后返回结果到用户表。没有插件!
为什么这不是内置到WordPress我们会知道吗?

这是链接,这也是代码的源代码:https://developer.wordpress.org/reference/hooks/pre_user_query/

这也是,这一个对我没有帮助,插件是不允许的,我以前工作过,所以我倾向于回避他们。How can I search by first name and/or last name among WordPress users?
我需要使用pre_user_query来修改传递到这个操作钩子的wp_query。

add_action( 'pre_user_query', function( $uqi ) {
    global $wpdb;

    $search = '';
    if ( isset( $uqi->query_vars['search'] ) )
        $search = trim( $uqi->query_vars['search'] );

    if ( $search ) {
        $search = trim($search, '*');
        $the_search = '%'.$search.'%';

        $search_meta = $wpdb->prepare("
        ID IN ( SELECT user_id FROM {$wpdb->usermeta}
        WHERE ( ( meta_key='first_name' OR meta_key='last_name' )
            AND {$wpdb->usermeta}.meta_value LIKE '%s' )
        )", $the_search);

        $uqi->query_where = str_replace(
            'WHERE 1=1 AND (',
            "WHERE 1=1 AND (" . $search_meta . " OR ",
            $uqi->query_where );
    }
});

我搜索了Stack Overflow,得到了一些奇怪的答案,但不是很直接。这篇文章没有答案,它一直出现在我的搜索中。我搜索了两个小时,用聊天机器人来回搜索,以了解过滤器在WordPress中是如何工作的。然后它给了我一个相关的链接,指向我试图完成的任务。希望其他人在找到这个答案时不会有问题

相关问题