评论函数

调用评论

comment_form()常用在comments.php中,调用整个评论区

<?php comment_form($args, $post_id); ?>

$args:comment_form() 的输出配置参数,为一个关联数组,配置项非常丰富,下面我们会详细说明。
$post_id:文章id,默认为空,即当前id
$args的默认配置:

$defaults = array(
	'fields'               => apply_filters( 'comment_form_default_fields', $fields ),
	'comment_field'        => '

<label for="comment">' . _x( 'Comment', 'noun' ) . '</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea>

',
	'must_log_in'          => '

' .  sprintf( __( 'You must be <a href="%s">logged in</a> to post a comment.' ), wp_login_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '

',
	'logged_in_as'         => '

' . sprintf( __( 'Logged in as <a href="%1$s">%2$s</a>. <a href="%3$s" title="Log out of this account">Log out?</a>' ), admin_url( 'profile.php' ), $user_identity, wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '

',
	'comment_notes_before' => '

' . __( 'Your email address will not be published.' ) . ( $req ? $required_text : '' ) . '

',
	'comment_notes_after'  => '

' . sprintf( __( 'You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: %s' ), ' <code>' . allowed_tags() . '</code>' ) . '

',
	'id_form'              => 'commentform',
	'id_submit'            => 'submit',
	'title_reply'          => __( 'Leave a Reply' ),
	'title_reply_to'       => __( 'Leave a Reply to %s' ),
	'cancel_reply_link'    => __( 'Cancel reply' ),
	'label_submit'         => __( 'Post Comment' ),
);

如果需要修改表单,需要在function.php中使用过滤器comment_form_default_fields

删除表单字段

如果我们想要删除网址字段,只需要打开主题的 functions.php 文件,添加以下代码:

add_filter(‘comment_form_default_fields’, ‘mytheme_remove_url’);

function mytheme_remove_url($arg) {
$arg[‘url’] = ”;
return $arg;
}

保存后刷新页面,你就会看到“url”输入框已经不存在了。

新增表单字段

假设我们要添加一个 QQ 字段,同样在主题的 functions.php 添加下面的代码即可:

add_filter('comment_form_default_fields', 'my_fields');

function my_fields($fields) {
	$fields['qq'] = '

' . '<label for="qq">'.__('QQ').'</label> ' .
	'<input id="qq" name="qq" type="text" value="' . esc_attr( $commenter['comment_qq'] ) . '" size="30" />

';
	return $fields;
}

刷新页面,即可看到新增的表单。

替换默认表单字段

代码和上面的例子差不多,如果你设置的字段为(author、email、url)其中之一,即 $fields[‘author’]、$fields[’email’]、$fields[‘url’] ,就可以替换默认的字段的输出内容。

默认的这三个字段如下:

add_filter('comment_form_default_fields', 'mytheme_remove_url');

function my_fields($fields) {
	$fields =  array(
		'author' => '

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

',
		'email'  => '

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

',
		'url'    => '

<label for="url">' . __( 'Website' ) . '</label>' .
		'<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" />

',
		);
}

需要注意的是,wordpress原生只支持author、email、url,如果新增或修改前台表单,还需要对评论审核后台、数据库等做对应改造。

参考:https://www.wpdaxue.com/wordpress-comment_form.html