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

WordPress插件按姓名搜索触发404错误,寻求排查方案

问题分析

按姓名搜索出现404但许可证号搜索正常,核心差异在于URL里的空参数:

  • 许可证号搜索URL:https://domain.tld/plugin/?name=&license_number=12520(name为空但license_number有值)
  • 姓名搜索URL:https://domain.tld/plugin/?name=LAST+MICHAEL+R&license_number=(license_number为空)

WordPress路由系统会解析URL参数,空参数license_number=可能触发重写规则误匹配,或是因为未注册查询变量,导致WordPress无法识别当前页面,最终返回404。另外,数据库name字段格式为LastName, FirstName Middle Initial,用户输入的是无逗号的姓名,会导致查询匹配不到结果,但这是无数据的问题,不是404的直接原因。

解决方案

1. 注册查询变量

让WordPress认可name和license_number参数,避免因未知参数判定页面不存在。在插件主文件添加:

add_filter('query_vars', 'register_license_search_vars');
function register_license_search_vars($vars) {
    $vars[] = 'name';
    $vars[] = 'license_number';
    return $vars;
}

2. 移除表单提交的空参数

修改表单逻辑,提交时自动剔除空输入字段,避免URL携带空参数:

<div class="search">
    <form class="search-form" method="get" action="" onsubmit="return cleanEmptyInputs(this)">
        <input type="text" name="name" placeholder="Enter Name">
        <input type="text" name="license_number" placeholder="Enter License Number">
        <input type="submit" value="Search">
    </form>

<script>
function cleanEmptyInputs(form) {
    const textInputs = form.querySelectorAll('input[type="text"]');
    textInputs.forEach(input => {
        if (!input.value.trim()) {
            input.disabled = true;
        }
    });
    return true;
}
</script>

提交姓名搜索时,URL会变成https://domain.tld/plugin/?name=LAST+MICHAEL+R,不再携带空的license_number=参数。

3. 优化姓名查询匹配逻辑

针对数据库name字段的带逗号格式,调整查询条件,让无逗号的用户输入也能匹配:

if (!empty($name)) {
    $search_name = str_replace(' ', '%', $wpdb->esc_like($name));
    // 同时匹配"LastName, FirstName"和"FirstName LastName"格式
    $conditions[] = $second_db->prepare(
        "name LIKE %s OR name LIKE %s",
        '%' . $search_name . '%',
        '%' . str_replace(' ', ', ', $wpdb->esc_like($name)) . '%'
    );
}

4. 验证请求是否到达插件

如果以上步骤无效,在插件代码最开头添加调试代码,确认请求是否真的到达插件:

echo '<pre>当前GET参数:';
print_r($_GET);
echo '</pre>';
die;

若页面显示调试内容,说明请求已到达插件,404可能是后续代码输出异常导致;若仍显示404,需检查插件页面的重写规则或页面注册方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:04:53