如何在wordpress留言板添加一个手机号的字段

作者

wordpresss不管是制作个人博客,还是企业网站,留言板都是一个常见的需求。对于企业来说,留言板就是一个询盘的表单。对于询盘信息重要的就是客户的联系方式,wordpress默认是可以填写邮箱的。如果不是外贸网站,手机号就是重要的联系方式。这里记录一下,wordpress留言板中如何添加一个手机的字段。

wordpress中使用留言板功能只用一个函数 comment_form() 就可以搞定。 这函数默认会输出含有五个字段 commentauthoremailurlcookies的表单。comment作为填写留言信息的字段,当然是必不可少的。其他的字段则可以进行订制,或者增加新的字段。这里说下如何新增加一个手机号的字段。

wordprss中添加一个手机号的字段

worpdress提供了修改留言字段的一个钩子,这里可以修改是这四个字段(authoremailurlcookies);
做个小测试,把这段代码放到主题文件中的 functions.php 中。找一个有留言的页面看下效果

add_filter('comment_form_default_fields', function ($fields) {
    echo "<!-- ";
    var_dump($fields);
    echo "-->";
    return $fields;
});

可以看到输出的结果

wordpress默认留言板字段
wordpress默认留言板字段

所以添加或者修留言的字段就很方便了,仅仅修改一下 $fileds这个变量就可以,这里添加一个手机号字段看下效果。

worpdress默认的留言字段
worpdress默认的留言字段

修改一下代码


add_filter('comment_form_default_fields', function ($fields) { $fields['tel'] = '<p class="comment-form-tel">' .'<label for="tel">联系电话</label> ' .'<input id="tel" name="tel" type="text" value="' . esc_attr($commenter['comment_tel']) . '" size="30" />' .'</p>'; return $fields; });

然后看下效果

wordpress修改留言板默认的字段,删除url和cookie,添加手机
wordpress修改留言板默认的字段,删除url和cookie,添加手机

前台的显示修改完成以后,就剩下两个问题。

  1. 手机号如何保存
  2. 后台如何显示

手机号的保存

使用wordpress提供的 wp_postmeta 表,通过 update_comment_meta函数把数据写入到这个数据表中。

add_action('wp_insert_comment',  function ($comment_ID, $commmentdata) {
    $tel = isset($_POST['tel']) ? $_POST['tel'] : false;
    update_comment_meta($comment_ID, 'tel', $tel);
}

手机号的后台显示

后台的显示,需要输出两个部分,一个部分 表头的字段 , 二 内容

# 后来评论显示电话的字段
add_filter('manage_edit-comments_columns', 'my_comments_columns');
function my_comments_columns($columns) {
    $columns['tel'] = __('联系电话');
    return $columns;
}


# 后台评论显示电话的内容
add_action('manage_comments_custom_column', 'output_my_comments_columns', 10, 2);
function output_my_comments_columns($column_name, $comment_id) {
    switch ($column_name) {
        case "tel" :
            echo get_comment_meta($comment_id, 'tel', true);
            break;
    }
}

后看下后台显示的效果

wordpress留言板添加手机号字段,后台的显示效果
wordpress留言板添加手机号字段,后台的显示效果

回复

您的电子邮箱地址不会被公开。