在WordPress主题定制的过程中,有很多时候需要前端表单功能,如果是比较简单的功能,可以用评论表单实现,可是遇到了表单字段比较多的情况,用评论系统实现起来就比较麻烦了,比如下面的表单。
需要的字段和 WordPress 评论字段都是不同的,那么我们怎么来实现这种表单呢?很多朋友会想到用插件,这不失为一种高效方便的办法,以上的表单就是通过 visual form builder 这个插件实现的,但是插件会带来性能和安全性上的一些问题,能不能不用插件实现自定义表单呢?
如果不用插件,我们怎么实现自定义表单?
WordPress 提供了足够丰富的 API 供我们使用,今天我们就在这里说说不用插件实现自定义表单的实现思路。需要用到的 WordPress 功能主要是 wp_insert_post
和 update_post_meta
。
第一步:创建 HTML 表单
这一步没有什么好说的,懂 HTML 的人都能很轻松的完成。
第二步:设置变量接收 HTML 表单发送过来的数据
主要用到的代码如下,有多少个表单项,就新建几个变量。
$ask_title = isset( $_POST['ask_title'] ) ? $_POST['ask_title'] : '';
这一步没有什么技术含量,就不多罗嗦了,省点时间赶紧说重点。
第三步:数据验证
if ( empty($ask_title) || strlen($ask_title) > 20 ){
wp_die('昵称必须填写,长度不超过20个字符');
}
第四步:保存数据到自定义文章类型及自定义字段中
这里是最关键的,wp_insert_post 和 update_post_meta 就是在这里用的。
//首先新建文章对象
$my_post = array(
'post_title' => $ask_title //就是表单提交过来的标题字段,
'post_content' => '这是内容自定',
'post_status' => 'publish',//文章状态
'post_category' => array(8,39) //分类id,可以用来区分表单
);
$new_post = wp_insert_post( $my_post ); //插入文章到数据库中,如果成功,返回新建的文章的id
update_post_meta($new_post, '自定义字段id', $ask_data); //给新建的文章id插入自定义字段
至此,建立自定义表单的工作就完成了,当然这只是一个最基础的功能,如果想更上一层楼,可以看一下: