当前浏览:首页 / WordPress函数 / comment_form()

comment_form( array $args = array(), int|WP_Post $post_id = null )

输出完整的评论表单,供在模板中使用

comment 评论more...

form 表单


描述

大多数字符串和表单字段可以通过传递到函数中的$args数组进行控制,如果您只想添加新字段或删除单个字段,则也可以选择使用‘comment_form_default_fields’过滤器修改默认字段数组。所有字段也分别通过‘comment_form_field_$name’过滤器钩子,其中$name是字段数组中使用的键。


参数

$args

(array) (可选) 要重写的默认参数和表单字段。

  • 'fields'
    (array) 默认的评论字段,可通过 ‘comment_form_default_fields’ 钩子过滤
    • 'author'
      (string) 评论作者字段 HTML
    • 'email'
      (string) 评论作者 email 字段 HTML
    • 'url'
      (string) 评论作者 URL 字段 HTML
    • 'cookies'
      (string) 评论 cookie 选择字段 HTML
  • 'comment_field'
    (string) 评论 textarea 字段 HTML
  • 'must_log_in'
    (string) 用于"必须登录才能评论"信息的HTML元素
  • 'logged_in_as'
    (string) 用于"以[用户]身份登录"信息的HTML元素
  • 'comment_notes_before'
    (string) 如果用户没有登录,在评论区前显示的信息的HTML元素。默认为:"您的电子邮件地址将不会被公布"
  • 'comment_notes_after'
    (string) 用于在textarea字段后显示消息的HTML元素
  • 'action'
    (string) 评论表单的action属性,默认为'/wp-comments-post.php'
  • 'id_form'
    (string) 评论表单的id属性,默认为'commentform'
  • 'id_submit'
    (string) 评论提交元素的id属性,默认为'submit'
  • 'class_container'
    (string) 评论表单的容器class属性,默认为'comment-respond'
  • 'class_form'
    (string) 评论表单元素的class属性,默认为'comment-form'
  • 'class_submit'
    (string) 评论提交元素的class属性,默认为'submit'
  • 'name_submit'
    (string) 评论提交元素的name属性,默认为'submit'
  • 'title_reply'
    (string) 可翻译的"回复"按钮label,默认为"留下回复"
  • 'title_reply_to'
    (string) 可翻译的"回复到"按钮标签,默认为 "给%s留下回复",其中%s是被回复的评论作者。
  • 'title_reply_before'
    (string) 显示在评论表单标题前的HTML,默认:<h3 id="reply-title" class="comment-reply-title">
  • 'title_reply_after'
    (string) 显示在评论表单标题之后的HTML,默认:</h3>
  • 'cancel_reply_before'
    (string) 在取消回复链接前显示的HTML
  • 'cancel_reply_after'
    (string) 在取消回复链接后显示的HTML
  • 'cancel_reply_link'
    (string) 可翻译的"取消回复"按钮label,默认为'取消回复'
  • 'label_submit'
    (string) 可翻译的"提交"按钮label,默认为'发表评论'
  • 'submit_button'
    (string) 提交按钮的HTML格式,默认:<input name="%1$s" type="submit" id="%2$s" class="%3$s" value="%4$s" />
  • 'submit_field'
    (string) 包围提交按钮和评论隐藏字段的标记的HTML格式,默认:<p class="form-submit">%1$s %2$s</p>,其中%1$s是提交按钮标记,%2$s是评论隐藏字段
  • 'format'
    (string) 评论表单的格式,默认为'xhtml',接受'xhtml'、'html5'

默认值: array()

$post_id

(int|WP_Post) (可选) 要生成表单的文章 ID或WP_Post对象,默认当前文章。

默认值: null



源码

查看源码 官方文档


更新日志

版本描述
5.5.0引入了“class_containerr”参数
4.9.6引入了“cookies”默认评论字段
4.6.0引入了“action”参数
4.5.0“author”、“email”和“url”表单字段分别限制为245、100和200个字符
4.4.0引入了'class_form'、'title_reply_before'、'title_reply_after'、'cancel_reply_before' 和 'cancel_reply_after'参数
4.2.0引入了'submit_button' 和 'submit_fields' 参数
4.1.0引入了“class_submit”参数
3.0.0开始引入

使用示例

  • 示例1

    如何更改一些评论表单字段的简单示例:

    $comments_args = array(
            // Change the title of send button 
            'label_submit' => __( 'Send', 'textdomain' ),
            // Change the title of the reply section
            'title_reply' => __( 'Write a Reply or Comment', 'textdomain' ),
            // Remove "Text or HTML to be displayed after the set of comment fields".
            'comment_notes_after' => '',
            // Redefine your own textarea (the comment body).
            'comment_field' => '<p class="comment-form-comment"><label for="comment">' . _x( 'Comment', 'noun' ) . '</label><br /><textarea id="comment" name="comment" aria-required="true"></textarea></p>',
    );
    comment_form( $comments_args );
    
  • 示例2

    评论字段的顺序>Functions.php

    //Comment Field Order
    add_filter( 'comment_form_fields', 'mo_comment_fields_custom_order' );
    function mo_comment_fields_custom_order( $fields ) {
        $comment_field = $fields['comment'];
        $author_field = $fields['author'];
        $email_field = $fields['email'];
        $url_field = $fields['url'];
        $cookies_field = $fields['cookies'];
        unset( $fields['comment'] );
        unset( $fields['author'] );
        unset( $fields['email'] );
        unset( $fields['url'] );
        unset( $fields['cookies'] );
        // the order of fields is the order below, change it as needed:
        $fields['author'] = $author_field;
        $fields['email'] = $email_field;
        $fields['url'] = $url_field;
        $fields['comment'] = $comment_field;
        $fields['cookies'] = $cookies_field;
        // done ordering, now return the fields:
        return $fields;
    }
  • 示例3

    翻译友好选项的扩展列表->comments.php

    //Declare Vars
    $comment_send = 'Send';
    $comment_reply = 'Leave a Message';
    $comment_reply_to = 'Reply';
    
    $comment_author = 'Name';
    $comment_email = 'E-Mail';
    $comment_body = 'Comment';
    $comment_url = 'Website';
    $comment_cookies_1 = ' By commenting you accept the';
    $comment_cookies_2 = ' Privacy Policy';
    
    $comment_before = 'Registration isn\'t required.';
    
    $comment_cancel = 'Cancel Reply';
    
    //Array
    $comments_args = array(
        //Define Fields
        'fields' => array(
            //Author field
            'author' => '<p class="comment-form-author"><br /><input id="author" name="author" aria-required="true" placeholder="' . $comment_author .'"></input></p>',
            //Email Field
            'email' => '<p class="comment-form-email"><br /><input id="email" name="email" placeholder="' . $comment_email .'"></input></p>',
            //URL Field
            'url' => '<p class="comment-form-url"><br /><input id="url" name="url" placeholder="' . $comment_url .'"></input></p>',
            //Cookies
            'cookies' => '<input type="checkbox" required>' . $comment_cookies_1 . '<a href="' . get_privacy_policy_url() . '">' . $comment_cookies_2 . '</a>',
        ),
        // Change the title of send button
        'label_submit' => __( $comment_send ),
        // Change the title of the reply section
        'title_reply' => __( $comment_reply ),
        // Change the title of the reply section
        'title_reply_to' => __( $comment_reply_to ),
        //Cancel Reply Text
        'cancel_reply_link' => __( $comment_cancel ),
        // Redefine your own textarea (the comment body).
        'comment_field' => '<p class="comment-form-comment"><br /><textarea id="comment" name="comment" aria-required="true" placeholder="' . $comment_body .'"></textarea></p>',
        //Message Before Comment
        'comment_notes_before' => __( $comment_before),
        // Remove "Text or HTML to be displayed after the set of comment fields".
        'comment_notes_after' => '',
        //Submit Button ID
        'id_submit' => __( 'comment-submit' ),
    );
    comment_form( $comments_args );