You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改WordPress用户搜索脚本,获取姓名、电话等更多用户信息

修改WordPress用户搜索脚本以返回更多用户信息

以下是修改后的完整代码,可返回用户的名、姓、邮箱和电话号码(假设电话号码存储在用户元数据的phone字段中,若你的字段名不同,请自行替换):

<form action="/custom-search" method="GET">
    <div class="search boxes">   
        <input type="text" name="ven_search_title" class="customsearch-field" placeholder="Vendor Search"> 
        <input type="submit" name="search" value="Search">
    </div>
</form>

<?php
// 处理搜索关键词,简化条件判断
if (!empty($_GET['ven_search_title'])) {
    $ven_search_title = sanitize_text_field($_GET['ven_search_title']);
    
    global $wpdb;
    // 关联用户表和用户元数据表,获取所需字段
    $query = $wpdb->prepare(
        "SELECT 
            u.user_nicename, 
            u.user_email,
            um_first.meta_value AS first_name,
            um_last.meta_value AS last_name,
            um_phone.meta_value AS phone
        FROM {$wpdb->prefix}users u
        LEFT JOIN {$wpdb->prefix}usermeta um_first ON u.ID = um_first.user_id AND um_first.meta_key = 'first_name'
        LEFT JOIN {$wpdb->prefix}usermeta um_last ON u.ID = um_last.user_id AND um_last.meta_key = 'last_name'
        LEFT JOIN {$wpdb->prefix}usermeta um_phone ON u.ID = um_phone.user_id AND um_phone.meta_key = 'phone'
        WHERE u.user_nicename LIKE %s",
        '%' . $wpdb->esc_like($ven_search_title) . '%' // 添加模糊匹配通配符,同时转义特殊字符
    );
    
    $results = $wpdb->get_results($query, ARRAY_A);
    
    if (!empty($results)) {
        foreach ($results as $user) {
            echo '<div class="user-result">';
            echo '<p><strong>用户名:</strong>' . esc_html($user['user_nicename']) . '</p>';
            echo '<p><strong>名:</strong>' . esc_html($user['first_name'] ?? '未填写') . '</p>';
            echo '<p><strong>姓:</strong>' . esc_html($user['last_name'] ?? '未填写') . '</p>';
            echo '<p><strong>邮箱:</strong>' . esc_html($user['user_email']) . '</p>';
            echo '<p><strong>电话:</strong>' . esc_html($user['phone'] ?? '未填写') . '</p>';
            echo '</div><hr>';
        }
    } else {
        echo '<p>未找到匹配的用户</p>';
    }
}
?>

关键改动说明:

  • 安全防护:用$wpdb->prepare()和$wpdb->esc_like()处理搜索关键词,避免SQL注入风险;同时添加%通配符实现模糊搜索(若需精确匹配可去掉通配符)。
  • 扩展数据来源:WordPress默认将用户姓名(first_name、last_name)存在wp_usermeta表中,通过LEFT JOIN关联该表获取对应字段;电话号码需根据实际存储的元字段名调整meta_key(比如电商场景常用billing_phone)。
  • 输出优化:用esc_html()转义输出内容防止XSS攻击,添加字段标签提升可读性,同时处理字段为空的情况(用??运算符显示默认提示文本)。
  • 逻辑简化:精简原代码中重复的条件判断,增加无匹配结果时的友好提示。

内容的提问来源于stack exchange,提问作者phplover

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 17:11:10