如何在 WordPress 插件中正确获取并显示用户表单输入

本文详解如何在 wordpress 自定义插件中通过 get 表单安全获取用户输入、赋值给 php 变量,并在页面中动态显示,避免未提交即读取 `$_get` 导致的错误。

在 WordPress 插件开发中,直接访问 $_GET['firstname'] 而不验证请求来源或提交状态,会导致 PHP Notice(如“Undefined index”)甚至逻辑错误——因为页面首次加载时该参数根本不存在。正确的做法是:将输入字段包裹在

中,并在确认表单已提交后再读取数据

以下是一个完整、安全、可直接集成到 WordPress 插件中的示例代码:

';
    echo '  ';
    echo '  ';
    echo '  ';
    echo '';

    // ✅ 关键:仅当表单真正提交后才处理数据
    if (isset($_GET['addcontent_submit']) && !empty(trim($_GET['firstname']))) {
        $firstname = sanitize_text_field($_GET['firstname']); // 强烈建议过滤输入!
        echo "

✅ 您输入的是:" . esc_html($firstname) . "

"; } elseif (isset($_GET['addcontent_submit'])) { echo '

⚠️ 姓名不能为空,请重新填写。

'; } }

? 重要说明与最佳实践:

  • 必须包含
    标签
    元素只有在
    内且触发提交动作(如点击 type="submit")后,其 name 值才会作为参数发送至当前 URL(如 ?firstname=Tom&addcontent_submit=提交)。
  • 提交检测不可省略:使用 isset($_GET['submit_name']) 判断是否为表单提交,而非直接读取 $_GET['firstname']。
  • 安全过滤必不可少:sanitize_text_field() 清理用户输入,esc_html() 防止 XSS 输出;切勿将原始 $_GET 数据直接 echo。
  • 短代码注册位置:确保 add_shortcode() 在函数定义之前或之后均可,但需在插件主文件中执行(非仅声明),且避免在 functions.php 中重复定义同名短代码。

? 扩展提示:若需持久化存储(如保存到数据库),应改用 POST 方法 + wp_insert_post() 或自定义数据表,并配合 wp_nonce_field() 防 CSRF 攻击。但对于基础回显场景,上述 GET 方案简洁高效,适合学习与轻量交互。