在 WordPress 中使用 Nette Form 表单类创建表单并提交到后台
文 / @UTHEME
使用NetteFrom类库创建WordPress自定义表单
大家好,我是小本本,今天要和大家介绍一下如何在WordPress中使用页面模板创建自定义表单。
在WordPress中使用页面模板创建自定义表单,让用户从前端页面输入数据过程是很麻烦的,主要麻烦的地方在于创建HTML表单并验证用户提交的数据,这一个过程需要写很多代码,一不小心,很容易会出错,导致表单提交不了,或出现一些安全性问题。
第一步,安装并引入Nette-From类库
通过Composer安装Nette-From类库
我们可以通过Composer安装NetteFrom类库,具体命令如下:
composer require nette/forms
如果不知道怎么使用Composer,请参考本站之前的文章在WordPress主题或插件中使用PHP Composer。
引入NetteFrom类
安装完成之后,可以直接在WordPress标准的页面模板中引入Composer生成的autoload.php文件,然后引入NetteFrom类:
require_once(dirname(__FILE__).'/vendor/autoload.php');
use Nette\Forms\Form;
创建表单并显示
最重要的一步就是创建表单了,这也是和直接使用HTML创建表单不同的地方,在这里,创建表单的代码完全写在PHP中,不用再去写乱七八糟的HTML代码了,代码量减少了不少,出错的机会自然也少了。
下面是一个创建自定义表单的示例代码:
// 获取用户数据,为表单设置默认数据时使用
$uid = wp_get_current_user()->ID;
$nickname = get_user_meta($uid, 'nickname', true);
$card = get_user_meta($uid, 'card', true);
// 创建表单
$form = new Form;
$form->setMethod('POST');
$form->addText('nickname', '昵称:')
->setRequired('请输入昵称') // 这里设置了验证此项为必填项
->setDefaultValue($nickname);
$form->addText('card', '会员卡号:')
->setDefaultValue($card);
$form->addSubmit('send', '修改资料');
// 显示表单
echo $form;
提交到后台
最后一步就是把提交过来的数据提交到后台了,提交之前,我们可以先验证一下表单的数据是否符合我们设置的条件,验证过程NetteFrom帮我们处理了,我们只需要简单的判断一下是否验证成功就可以了,如果验证成功,就把数据保存到后台,这里直接使用update_user_meta
把数据保存到了用户自定义字段。如果验证失败,就显示错误提示信息。
下面是一个将数据保存到数据库中的示例代码:
// 验证表单
if ($form->isSuccess()) {
// 获取表单的值,有了这个,就不用通过丑陋的$_POST[*]来获取表单提交的值了。
$values = $form->getValues();
// 保存自定义字段,有了这个操作,才能保存数据到数据库中
update_user_meta($uid, 'nickname', $values->nickname);
update_user_meta($uid, 'card', $values->card);
// 显示成功提醒
echo '<div class="ui-c-alert ui-c-alert-success">用户资料修改成功</div>';
}
// 如果表单有错误,显示错误信息
$form->render('errors');
到这里,一个功能完整的表单就处理好了。当然,演示代码中需要处理的数据比较少,看起来可能没什么必要。试想一下,如果表单项非常多的情况下,直接使用HTML创建表单,还是使用本文介绍的方法比较方便,相信结果是一目了然的。

相关文章
-
WordPress网站的安全插件:wordfence 2023-09-14 09:25:18
-
创建Vue组件详细教程 2023-09-10 00:23:17
-
WordPress 6.3 支持在手动更新插件和主题失败后回滚旧版本 2023-08-28 16:58:45
-
WordPress 6.3版本(2023年8月)性能提升了哪些? 2023-08-28 16:56:02
-
Astra 主题团队推出人工智能驱动的 WordPress 网站创建平台 – ZIPWP 2023-08-28 16:49:54
-
WordPress 宣布将为用户提供 100 年域名托管服务 2023-08-28 16:45:27
-
PHP判断if else 和 switch case的区别盘点 2023-07-29 15:11:11
-
详解WordPress独立站SEM中的OCPC方法(含百度推广OCPC与谷歌OCPC) 2023-07-19 08:01:30
-
WordPress的古腾堡全站编辑器site-editor.php介绍(附:site-editor.php启用代码) 2023-07-16 08:01:57
-
WordPress的Customize Partial功能最全介绍(含:demo代码) 2023-07-16 00:21:56