如何在CPT的备注表格中添加额外的输入栏?

时间:2017-06-19 作者:Eh Jewel

我找到了过滤器挂钩来添加/修改WordPress默认评论表单。但我找不到如何向CPT(自定义帖子类型)的评论表单添加额外字段。

实际上,我想知道如何在自定义帖子类型的评论表单中添加额外的输入字段,如“评级”字段、“名字”字段、“姓氏”字段等。

1 个回复
最合适的回答,由SO网友:cjbj 整理而成

如果已在中找到筛选器comment_form 功能,您非常接近。有一个名为comment_form_default_fields 它允许您向字段数组中添加额外的输入字段,字段数组通常包含名称、邮件地址和url。你这样使用它(在你的主题中functions.php):

add_filter (\'comment_form_default_fields\',\'wpse270550_add_field\');
function wpse270550_add_field ($fields) {
  $fields[\'your_field\'] = \'<p><label for="your_field">Your Label</label><input id="your_field_id" name="your_field" type="text" value="" size="30"/></p>\';
  return $fields;
  }
如果只想将此字段添加到某个CPT的注释表单中,唯一需要做的就是添加一个条件:

add_filter (\'comment_form_default_fields\',\'wpse270550_add_field\', 10, 1);
function wpse270550_add_field ($fields) {
  if (\'your_cpt\' == get_post_type())
    $fields[\'your_field\'] = \'<p><label for="your_field">Your Label</label><input id="your_field_id" name="your_field" type="text" value="" size="30"/></p>\';
  return $fields;
  }
请注意,以上内容只会在用户端的表单中添加字段。您还希望在提交字段后将其存储在数据库中。为此,您必须将comment_post 这样的动作:

add_action (\'comment_post\', \'wpse270550_add_comment_meta_value\', 10, 1);
function wpse270550_add_comment_meta_value ($comment_id) {
    if(isset($_POST[\'your_field\'])) {
        // sanitize data
        $your_field = wp_filter_nohtml_kses($_POST[\'your_field\']);
        // store data
        add_comment_meta ($comment_id, \'your_field\', $your_field, false);
        }
    }

结束

相关推荐