
本文详解如何在 wordpress 自定义插件中通过 get 表单安全获取用户输入、赋值给 php 变量,并在页面中动态显示,避免未提交即读取 `$_get` 导致的错误。
在 WordPress 插件开发中,直接访问 $_GET['firstname'] 而不验证请求来源或提交状态,会导致 PHP Notice(如“Undefined index”)甚至逻辑错误——因为页面首次加载时该参数根本不存在。正确的做法是:将输入字段包裹在 。
以下是一个完整、安全、可直接集成到 WordPress 插件中的示例代码:
<?php
// 注册短代码 [addContent]
add_shortcode('addContent', 'addContent');
function addContent() {
// 输出 HTML 表单(使用 GET 方法,便于调试;生产环境推荐 POST + nonce 验证)
echo '<form method="GET">';
echo ' <label for="firstname">姓名:</label>';
echo ' <input type="text" id="firstname" name="firstname" placeholder="请输入姓名" />';
echo ' <input type="submit" name="addcontent_submit" value="提交" />';
echo '</form>';
// ✅ 关键:仅当表单真正提交后才处理数据
if (isset($_GET['addcontent_submit']) && !empty(trim($_GET['firstname']))) {
$firstname = sanitize_text_field($_GET['firstname']); // 强烈建议过滤输入!
echo "<p>✅ 您输入的是:<strong>" . esc_html($firstname) . "</strong></p><div class="aritcle_card flexRow">
<div class="artcardd flexRow">
<a class="aritcle_card_img" href="/ai/2019" title="飞书多维表格"><img
src="https://img.php.cn/upload/ai_manual/000/000/000/175679978185950.png" alt="飞书多维表格" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a href="/ai/2019" title="飞书多维表格">飞书多维表格</a>
<p>表格形态的AI工作流搭建工具,支持批量化的AI创作与分析任务,接入DeepSeek R1满血版</p>
</div>
<a href="/ai/2019" title="飞书多维表格" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
</div>
</div>";
} elseif (isset($_GET['addcontent_submit'])) {
echo '<p>⚠️ 姓名不能为空,请重新填写。</p>';
}
}? 重要说明与最佳实践:
- 必须包含 : 元素只有在
- 提交检测不可省略:使用 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 方案简洁高效,适合学习与轻量交互。









