
本文详解如何在 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 '⚠️ 姓名不能为空,请重新填写。
';
}
}? 重要说明与最佳实践:
- 必须包含 : 元素只有在
- 提交检测不可省略:使用 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 方案简洁高效,适合学习与轻量交互。










