在在创建WordPress后台选项界面(一)一文中,我们为CC Comments plugin创建了一个后台选项界面,界面里除了标题和描述外没有其它信息。本文将描述如何添加表单并保存数据到WordPress数据库。
在WordPress数据库中保存数据,有两种方式:
- 创建自定义数据表
- 保存到wp_options表中
本文使用第二种方法,这也是比较常用的方法。如果你的数据不太复杂,没有特殊要求,完全可以使用wp_options表来存储。
目录
Step 1. 在后台管理界面创建表单
在在第一节中用来创建选项界面HTML结构的函数cccomm_option_page()中加入表单代码
function cccomm_option_page() { ?> <div class="wrap"> <?php screen_icon(); ?> <h2>CC Comments Options </h2> <p>Welcome to CC Comments plugin, here you can edit the email(s) to CC your comments to. </p> <form action="" method="post" id="cc-comments-email-options-form"> <h3><label for="cc_email"></label>Email to send CC to: <input type="text" name="cc_email" id="cc_email" value="<?php echo esc_attr(get_option('cccomm_cc_email')) ?>" size="40" /></h3> <p><input type="submit" name="submit" value="Save Email" /></p> <?php wp_nonce_field('cccomm_admin_options-update'); ?> </form> </div> <?php }
- 表单的acton为空,意思是提交到本页面
- 用户要填写的字段name为cc_email,用来存储要抄送的邮箱地址
- get_option()用来获取wp_options表中的数据,只需要告诉它要获取的字段的option_name是什么,它就会返回option_value,这里option_name为cccomm_cc_email
- 特别注意wp_nonce_field这个函数,在php中判断表单提交,通常的做法是创建一个hidden field,在数据处理函数中验证$_POST[‘hidden field name’]是否存在。这种做法虽然可以但并不安全,wp_nonce_field函数则可以进行安全验证
刷新页面效果如下
Step 2. 存储数据到wp_options表中
因为数据被提交到当前页面,所以我们可以在cccomm_option_page()函数中完成数据存储
function cccomm_option_page() { if( !empty($_POST) && check_admin_referer('cccomm_admin_options-update') ) { update_option('cccomm_cc_email', $_POST['cc_email']); ?> <div id="message" class="updated"> <p><strong>Email was saved for CC Comments</strong></p> </div> <?php } ?> <div class="wrap"> <?php screen_icon(); ?> ... <?php }
- 在检测是否有数据提交时,使用了check_admin_referer()函数,参数就是wp_nonce_field()函数中定义的key
- 验证通过,就调用update_option()函数存储数据。update_option()先检测option_name是否存在,如果不存在则创建,存在则更新。add_option()更适合用在插件启用时存储数据的情景。
- 我们还要向用户展示一条消息,告知email已经成功保存,使用WordPress预定义结构包含我们的消息,id可以随意更换。
<div id="message" class="updated"></div>
提交后的效果如下
这种保存数据的方法不是唯一的,将数据存储到wp_options表中可以使用Settings API来实现,更加简单安全。不过要向自定义数据表中存储数据,这种做法还是很有用的。
示例代码下载
[download id=39]
您好 我想问下 如何将数据保存到自定义数据表中呢
直接用sql语句插入即可。
详细方法看https://codex.wordpress.org/Class_Reference/wpdb
好的 谢谢 另外有个问题希望能够得到您的帮助 感激不尽
我们有项在线申请的业务 需要客户在前端填写一些text类型字段 以及上传几个附件
我们想在后台管理提交的数据 比如:我怎样在后台添加处理页 怎样修改 更新提交的数据
想问下怎么弄 貌似contact form 7这类的表单插件只能以邮件形式接收表单数据?!
http://wordpress.org/plugins/contact-form-7-to-database-extension/
看看这个插件或许会有灵感
博主以一个功能实例来开发讲解,
虽然有些插件和第三方网站可以实现类似一点的功能,但都不能实现对本站用户自己在本站的收藏。
大概:
1.用户需要注册才可以进行对文章的收藏,用户登录后台后可以看到收藏的有哪些,可以删除自己不喜欢的。
2、可以让网站首页文章按收藏文章数来排行
3、可以显示最新被收藏的文章有哪些。
求博主了,搜遍了互联网,没有任何1个bloger和插件可以实现啊!
非常定制的插件只能自己写,找不到合适的很正常。这种情况最合适的解决方法是雇一个开发人员