详解WordPress中调用评论模板和循环输出评论的PHP函数
comments_template
comments_template函数是一个调用评论模板的函数,使用起来很简单,与get_header()等函数一样,是一个include文件类函数,今天来讲一下他的使用。
描述
上面已经讲过了,就是调用评论模板的一个函数。
使用
<?phpcomments_template($file,$separate_comments);?>
其中
$file需要调用的文件名默认值:/comments.php
$separate_comments是否分隔不用类型的评论布尔型默认值:false
讲的比较笼统,更深层次请往下看
使用实例
<?phpcomments_template(get_post_format().'-comment.php',true);?>
这样,就可以根据你不同的文章类型去显示文章评论了。
用法上是不是跟get_template_part()有点类似呢?
至于$separate_comments准确的意思,我也没搞明白,不过官方默认主题一直都是true的所以我也就跟进了。之前研究过一次,貌似这里指的类型是是否回复的意思。
wp_list_comments
wp_list_comments函数是一个循环输出当前文章或页面每个评论的函数,在WordPress主题中主要被用来输出每一条评论,省去我们手工便利之苦,也把WordPress的评论功能很好的进行了模块化。
wp_list_comments函数在主题中配合comments_template函数联合使用可以很好的将WordPress的评论功能独立出来,而且可以更好对评论嵌套层数、每页显示评论数量、评论样式等等等等进行控制。所以如果你想做好主题的话,那还是看一下吧。
描述
英文原文:
DisplaysallcommentsforapostorPagebasedonavarietyofparametersincludingonessetintheadministrationarea.
我的理解:
用一个整体设置的参数来显示一篇文章、页面的所有评论。
用法
<?php wp_list_comments($args); ?>
参数使用
<?php$args=array( 'walker'=>null, 'max_depth'=>, 'style'=>'ul', 'callback'=>null, 'end-callback'=>null, 'type'=>'all', 'page'=>, 'per_page'=>, 'avatar_size'=>32, 'reverse_top_level'=>null, 'reverse_children'=>);?>
$walker自定义样式类名
$avatar_size头像大小Default:32
$style评论容器标签可以是‘div',‘ol',or‘ul',默认值是'ul',如果不是,那你需要像如下那样明确写出。
<divclass="commentlist"><?phpwp_list_comments(array('style'=>'div'));?></div>
或
<olclass="commentlist"><?phpwp_list_comments(array('style'=>'ol'));?></ol>
$type显示何种评论,参数可以是‘all'、'comment'、'trackback'、'pingback'、'pings'.‘pings'包括'trackback'和‘pingback'.
默认值:‘all'
$reply_text回复按钮的文本值,这个较少用不解释默认值:‘Reply'
$login_text登录按钮的文本值,这个较少用不解释默认值:‘LogintoReply'
$callback评论显示的回调函数,即显示评论主题的函数名称
$end-callback应该是循环结束后的回调函数,本人未实测,请自行探索。
$reverse_top_level布尔值,如果设置本参数为真,则先显示最新一条评论,后面的评论按照后台设置显示。
$reverse_children布尔值,如果设置本参数为真,则先显示最新一条有子评论的评论,后面的评论按照后台设置显示。
实例
这里是官方默认主题twentyeleven中的评论显示演示,
具体其他的参数请参照以上介绍自行演示探索。
<olclass="commentlist"> <?php /*Loopthroughandlistthecomments.Tellwp_list_comments() *tousetwentyeleven_comment()toformatthecomments. *Ifyouwanttooverloadthisinachildthemethenyoucan *definetwentyeleven_comment()andthatwillbeusedinstead. *Seetwentyeleven_comment()intwentyeleven/functions.phpformore. */ wp_list_comments(array('callback'=>'twentyeleven_comment')); //twentyeleven_comment函数在主题文件"twentyeleven/functions.php"中定义。 ?> </ol>