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

WordPress域名搜索表单输入值无法传递到action链接domainToCheck参数

问题根因

  1. PHP是服务端执行的语言,在短代码渲染输出表单到浏览器的时候,用户还没有在输入框填写任何内容,$_POST["domaininput"]此时根本不存在,自然无法提前拼接到action链接里。
  2. 之前尝试改为get方法不生效的原因是:get方法只会把表单参数加到action域名后的根路径参数里,不会自动识别并拼接到action参数中内嵌的godaddy查询地址的domainToCheck字段内。

可行解决方案(直接替换原有短代码即可)

function domain_search_box(){
    global $wp;
    $current_slug = add_query_arg( array(), $wp->request );
    $current_url = home_url( add_query_arg( array(), $wp->request ) );
    
    if($current_slug == "") {
        $current_slug = $current_url;
    }
    // 基础表单先不拼接domainToCheck,留到前端JS提交时动态处理
    $result = '<form class="form-wrapper cf" id="domain-search-form" action="https://www.kqzyfj.com/click-5628080-11774111?aid=11774111&pid=5628080&sid='.esc_attr($current_slug).'&url=https://www.godaddy.com/domains/searchresults.aspx?checkAvail=1/" method="post">
    <input name="domaininput" id="domaininput" type="text" placeholder="Search for a Domain" required>
    <button type="submit">Search</button>
    </form>
    <script>
    // 监听表单提交事件,动态拼接输入值到目标参数
    document.getElementById("domain-search-form").addEventListener("submit", function(e){
        const inputVal = document.getElementById("domaininput").value.trim();
        if(inputVal){
            let baseAction = this.action;
            this.action = baseAction.replace("checkAvail=1/", "domainToCheck=" + encodeURIComponent(inputVal) + "&checkAvail=1/");
        }
    });
    </script>';
    return $result;
}
add_shortcode( 'domain_search_box', 'domain_search_box' );

方案说明

  • 保留原有post提交逻辑,联盟的sid、pid等溯源参数不会丢失
  • 用encodeURIComponent处理用户输入值,避免特殊字符导致URL解析错误
  • 新增esc_attr处理slug输出,避免XSS安全风险,符合WordPress官方编码规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 22:36:09