个性化阅读
专注于IT技术分析

如何自定义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>

请参阅下面的代码以获取进一步的说明…

默认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="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="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="Post Comment">
            <input type="hidden" name="comment_post_ID" value="22" id="comment_post_ID">
            <input type="hidden" name="comment_parent" id="comment_parent" value="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="<?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="<?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="<?php echo $id; ?>" id="comment_post_ID">
            <input type="hidden" name="comment_parent" id="comment_parent" value="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()文档


#4


comment_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 content

Use 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();
赞(1)
未经允许不得转载:srcmini » 如何自定义WordPress comment_form();

评论 2

评论前必须登录!