WordPress非comment_form()函数自定义评论表单

虽然可以使用comment_form()函数自定义评论表单,但有时候我们需要随心所欲的写所有评论表单标签,特别是在仿站的时候,HTML和CSS都是现成的,如果使用comment_form()函数自定义评论表单,可能需要修改很多样式。

其实WordPress的评论表单非常简单,默认的就下面几个元素:

<input type="text" name="author" placeholder="昵称" />
<input type="email" name="email" placeholder="邮箱" />
<input type="url" name="url" placeholder="网址" />
<textarea name="comment" cols="30" rows="10" placeholder="我要吐槽..."></textarea>

但只提交这些参数是无法保存评论的,因为还有几个隐藏的参数,包括评论ID、父评论ID(如果有的话),另外如果启用了垃圾评论过滤插件Akismet Anti-Spam,该插件也会生成几个隐藏的表单域。

使用下面的代码就可以生成这些隐藏的表单域:

<?php
	echo get_comment_id_fields( $post->id );
	do_action( 'comment_form', $post->id );
?>

完整的评论表单代码如下:

<form action="<?php echo esc_url( home_url( '/' ) ); ?>wp-comments-post.php" method="post">
	<input type="text" name="author" placeholder="昵称" />
	<input type="email" name="email" placeholder="邮箱" />
	<input type="url" name="url" placeholder="网址" />
	<textarea name="comment" cols="30" rows="10" placeholder="我要吐槽..."></textarea>
	<input type="submit" value="确认提交" />
	<?php
		echo get_comment_id_fields( $post->id );
		do_action( 'comment_form', $post->id );
	?>
</form>

注意:WordPress评论表单代码需要放在Loop主循环中,另外,从以上代码也可以看出,引用了文章id,因此评论表单只适用于文章和页面。

阿里云