Customise Comment form

时间:2013-12-11 作者:user2960468

我正在尝试定制评论表单,以便可以清楚地编辑标签并设置样式。

<?php comment_form( $args = array(
              \'id_form\'           => \'commentform\',  // that\'s the wordpress default value! delete it or edit it ;)
              \'id_submit\'         => \'commentsubmit\',
              \'title_reply\'       => __( \'Leave a Reply\' ),  // that\'s the wordpress default value! delete it or edit it ;)
              \'title_reply_to\'    => __( \'Leave a Reply to %s\' ),  // that\'s the wordpress default value! delete it or edit it ;)
              \'cancel_reply_link\' => __( \'Cancel Reply\' ),  // that\'s the wordpress default value! delete it or edit it ;)
              \'label_submit\'      => __( \'Post Comment\' ),  // that\'s the wordpress default value! delete it or edit it ;)

              \'comment_field\' =>  \'<p><textarea placeholder="Start typing..." id="comment" class="form-control" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>\', 

              \'comment_notes_after\' => \'<p>\' .
                __( \'You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes:\' ) .
                \'</p><div class="">\' . allowed_tags() . \'</div>\' 

    )); 
    ?>
如何更改它,以便针对适当的字段,例如Name, EmailWebsite? 我找不到这样做的好教程。任何帮助或指导都将不胜感激。

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

这个default comment form fields 定义如下:

$fields =  array(

  \'author\' =>
    \'<p class="comment-form-author"><label for="author">\' . __( \'Name\', \'domainreference\' ) . \'</label> \' .
    ( $req ? \'<span class="required">*</span>\' : \'\' ) .
    \'<input id="author" name="author" type="text" value="\' . esc_attr( $commenter[\'comment_author\'] ) .
    \'" size="30"\' . $aria_req . \' /></p>\',

  \'email\' =>
    \'<p class="comment-form-email"><label for="email">\' . __( \'Email\', \'domainreference\' ) . \'</label> \' .
    ( $req ? \'<span class="required">*</span>\' : \'\' ) .
    \'<input id="email" name="email" type="text" value="\' . esc_attr(  $commenter[\'comment_author_email\'] ) .
    \'" size="30"\' . $aria_req . \' /></p>\',

  \'url\' =>
    \'<p class="comment-form-url"><label for="url">\' . __( \'Website\', \'domainreference\' ) . \'</label>\' .
    \'<input id="url" name="url" type="text" value="\' . esc_attr( $commenter[\'comment_author_url\'] ) .
    \'" size="30" /></p>\',
);
并通过过滤器:

\'fields\' => apply_filters( \'comment_form_default_fields\', $fields )
因此,要修改它们,只需添加一个过滤器:

function wpse126157_comment_form_fields( $fields ) {
    // Your code here

    // Return something
    return $fields;
}
add_filter( \'comment_form_default_fields\', \'comment_form_default_fields\' );
请注意法典中的重要信息:

注意:若要在自定义回调函数中使用上述代码中的变量,必须首先使用以下命令在回调函数中设置这些变量:

$commenter = wp_get_current_commenter();
$req = get_option( \'require_name_email\' );
$aria_req = ( $req ? " aria-required=\'true\'" : \'\' );
因此,您可以相应地修改回调:

function wpse126157_comment_form_fields( $fields ) {

    // Include these if you intend to use them
    $commenter = wp_get_current_commenter();
    $req = get_option( \'require_name_email\' );
    $aria_req = ( $req ? " aria-required=\'true\'" : \'\' );

    // Your code here

    // Return something
    return $fields;
}
add_filter( \'comment_form_default_fields\', \'comment_form_default_fields\' );

结束

相关推荐

Add filter to comments loop?

我正在制作一个插件,用于存储推荐人数据以供评论。我已经创建了数据库表,并且在进行注释时正确存储了数据。现在,我想为每个注释在注释块上附加一个自定义div。如何向注释循环添加过滤器?我想说“如果这个评论ID在我的表中有一个推荐人,那么在我的特殊div中打印出推荐人”。我可以自己写函数,我只需要在哪里注入函数的帮助。