如何自定义WordPress comment_form();

我目前正在开发自己的Wordpress主题, 并且最近一直在开发自定义的comments_template(); 。我已经阅读过使用wp_list_comments(); 方法是按页/帖子拉入并显示评论的最佳实践。我已经成功地定制了通过该方法提取注释并显示注释的方式。
我也读过使用comment_form(); 方法是显示评论表单的最佳实践。但是, 我确实很难尝试自定义此设置。我对$ args, 过滤器和操作之间有些困惑。
从本质上讲, 我想彻底更改评论表单的某些部分。我如何在仍然使用最佳实践对comment_form()进行更改的同时更改评论表单的某些部分;方法?
我真正需要做的就是在< divs> 中包装几个现有的< p> 标记。我尝试进行的更新列表如下:

  1. 将< h3> 标头调整为< h2 class =” comments-header” > 向我们介绍你!< / h2>
  2. 在< fieldset> < / fieldset> 中包装表单字段
  3. 在< div class =” label” > < / div> 中包装< label>
  4. 在< div class =” field” > < / div> 中包装< input>
  5. 使< p class =” form-allowed-tags” > < / p> 显示在注释< textarea> 之前而不是之后
  6. 更改表单Submit按钮以使用< button> 元素而不是< input>
【如何自定义WordPress comment_form(); 】请参阅下面的代码以获取进一步的说明…
默认comment_form(); 输出的代码:
< div id="respond"> < h3 id="reply-title"> Leave a Reply< /h3> < form action="http://localhost/.../wp-comments-post.php" method="post" id="commentform"> < p class="comment-notes"> Your email address will not be published. Required fields are marked < span class="required"> *< /span> < /p> < p class="comment-form-author"> < label for="author"> Name< /label> < span class="required"> *< /span> < input id="author" name="author" type="text" value="http://www.srcmini.com/John Doe" size="30" aria-required="true"> < /p> < p class="comment-form-email"> < label for="email"> Email< /label> < span class="required"> *< /span> < input id="email" name="email" type="text" value="http://www.srcmini.com/johndoe@dodgeit.com" size="30" aria-required="true"> < /p> < p class="comment-form-url"> < label for="url"> Website< /label> < input id="url" name="url" type="text" value size="30"> < /p> < p class="comment-form-comment"> < label for="comment"> Comment< /label> < textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"> < /textarea> < /p> < p class="form-allowed-tags"> You may use these HTML tags and attributes... < /p> < p class="form-submit"> < input name="submit" type="submit" id="submit" value="http://www.srcmini.com/Post Comment"> < input type="hidden" name="comment_post_ID" value="http://www.srcmini.com/22" id="comment_post_ID"> < input type="hidden" name="comment_parent" id="comment_parent" value="http://www.srcmini.com/0"> < /p> < /form> < /div> < !-- #respond -->

我正在尝试输出的代码:
< div id="respond"> < h2 class="comments-header"> Tell us about you!< /h2> < form action="http://localhost/.../wp-comments-post.php" method="post" id="commentform"> < fieldset> < div class="label"> < label for="author"> Name < span class="required"> *< /span> < /label> < /div> < div class="field"> < input id="author" name="author" type="text" value="http://www.srcmini.com/< ?php echo $comment_author_email; ?>" size="30" aria-required="true"> < /div> < /fieldset> < fieldset> < div class="label"> < label for="email"> E& ndash; mail (will not be published) < span class="required"> *< /span> < /label> < /div> < div class="field"> < input id="email" name="email" type="text" value="http://www.srcmini.com/< ?php echo $comment_author_email; ?>" size="30" aria-required="true"> < /div> < /fieldset> < p class="form-allowed-tags"> You may use these HTML tags and attributes... < /p> < fieldset> < div class="field"> < textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"> < /textarea> < /div> < /fieldset> < p class="form-submit"> < button class="story-submit-btn" type="submit" name="submit" id="sub"> Post your story< /button> < input type="hidden" name="comment_post_ID" value="http://www.srcmini.com/< ?php echo $id; ?>" id="comment_post_ID"> < input type="hidden" name="comment_parent" id="comment_parent" value="http://www.srcmini.com/0"> < /p> < /form> < /div> < !-- #respond -->

任何帮助是极大的赞赏!
#1我使用functions.php修改注释显示。我不知道这是现在完成的方式(我用WP开发的最后一个站点是在2009年;需要注释);但是这里是(将其放置在functions.php文件中!):
function THEMENAME_comment($comment, $args, $depth) { $GLOBALS['comment'] = $comment; *your comment display code* }

记得还要创建pingback主题。你的操作类似于注释, 只是第一行不同:
函数THEMENAME_pings($ comment, $ args, $ depth)
其他方式可能是使用comments_template。
#2如果所有其他方法均失败, 则在主题目录的comment.php中, 更改comment_form($ args); 。至
ob_start(); comment_form($args); $comment_form = ob_get_clean(); //insert code to modify $comment_form echo $comment_form;

我使用它来将” 提交” 按钮更改为” 图像” 按钮。
#3一个简单的示例, 如何更改某些注释表单字段。
$comments_args = array( // change the title of send button 'label_submit'=> 'Send', // change the title of the reply section 'title_reply'=> 'Write a Reply or Comment', // 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);

有关更多信息:WordPress Codex上的comment_form()文档
#4comment_form使用字段数组。该数组中的值是一个字符串。你可以通过为各个键添加自己的字符串来覆盖字段的输出, 如下所示:
function modify_comment_fields($fields){$fields =array('author' => '< div> < p class="comment-form-author"> < label for="author"> Author< /label> < input id="author" name="author" type="text"/> < /p> < /div> '); return $fields; }

然后向你的函数添加一个过滤器:
add_filter('comment_form_default_fields', 'modify_comment_fields');

这是指向comment_form函数上的法典的链接:http://codex.wordpress.org/Function_Reference/comment_form
#5
On Single.php after post contentUse it for custom comment form html and design< code> < ?php $comments_args = array( // change the title of send button 'label_submit'=> 'Submit', // change the title of the reply section 'title_reply'=> 'Add a comment', // remove "Text or HTML to be displayed after the set of comment fields" 'comment_form_top' => 'ds', 'comment_notes_before' => '', 'comment_notes_after' => '', // redefine your own textarea (the comment body) 'comment_field' => '< p class="comment-form-comment"> < textarea id="comment" name="comment" placeholder="Your Comment* " aria-required="true"> < /textarea> < /p> ', 'fields' => apply_filters( 'comment_form_default_fields', array('author' => '< p class="comment-form-author"> '. '< input id="author" class="blog-form-input" placeholder="Your Name* " name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /> < /p> ', 'email' => '< p class="comment-form-email"> '. '< input id="email" class="blog-form-input" placeholder="Your Email Address* " name="email" type="text" value="' . esc_attr($commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /> < /p> ', 'url' => '< p class="comment-form-url"> '. '< input id="url" class="blog-form-input" placeholder="Your Website URL" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /> < /p> ' ) ), ); comment_form($comments_args); ?> < /code>

#6你是否检查过编解码器:http://codex.wordpress.org/Function_Reference/comment_form
定制不容易, 但是可行
#7
function THEMENAME_comment($comment, $args, $depth) { $GLOBALS['comment'] = $comment; *your comment display code* }

#8我的主题使用默认功能comment_form, 因此我更改了子主题。
if(function_exists('glutton_comment_form')) glutton_comment_form(); //custom function for displaying comments, defined in glutton-child/functions.php else comment_form();

    推荐阅读