WordPress 前端投稿和自定义联系表单功能实现思路


WordPress主题定制的过程中,有很多时候需要前端表单功能,如果是比较简单的功能,可以用评论表单实现,可是遇到了表单字段比较多的情况,用评论系统实现起来就比较麻烦了,比如下面的表单。

需要的字段和 WordPress 评论字段都是不同的,那么我们怎么来实现这种表单呢?很多朋友会想到用插件,这不失为一种高效方便的办法,以上的表单就是通过 visual form builder 这个插件实现的,但是插件会带来性能和安全性上的一些问题,能不能不用插件实现自定义表单呢?

如果不用插件,我们怎么实现自定义表单?

WordPress 提供了足够丰富的 API 供我们使用,今天我们就在这里说说不用插件实现自定义表单的实现思路。需要用到的 WordPress 功能主要是 wp_insert_postupdate_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插入自定义字段

至此,建立自定义表单的工作就完成了,当然这只是一个最基础的功能,如果想更上一层楼,可以看一下:

  • 分享:
评论
还没有评论
    发表评论 说点什么