描述
在comment.php模板中使用,用于列出某篇文章的评论。
另见
- WP_Query->comments
参数
- $args
-
(string|array) (可选) 格式化选项。
- 'walker'
(object) Walker类的实例,用于列出评论。默认为 null - 'max_depth'
(int) 最大的评论深度。 - 'style'
(string) 列表排序的样式,接受'ul'、'ol'、或'div'。'div'将导致没有额外的列表标记。默认为'ul' - 'callback'
(callable) 要使用的回调函数,默认为 null - 'end-callback'
(callable) 结束时使用的回调函数,默认为 null - 'type'
(string) 要列出的评论类型,接受 'all'、'comment'、'pingback'、'trackback'、'pings',默认为 'all' - 'page'
(int) 列出评论的页面 ID - 'per_page'
(int) 每页要列出的评论数量 - 'avatar_size'
(int) 头像尺寸的高度和宽度,默认为 32 - 'reverse_top_level'
(bool) 列出评论的顺序,如果true,将首先显示最新的评论,默认为 null - 'reverse_children'
(bool) 是否在列表中反转子评论,默认为 null - 'format'
(string) 如何格式化评论列表,接受 'html5'、'xhtml',默认 'html5' (如果主题支持) - 'short_ping'
(bool) 是否输出短ping,默认为 false - 'echo'
(bool) 直接输出还是返回结果,默认 true
默认值: array()
- 'walker'
- $comments
-
(WP_Comment[]) (可选) WP_Comment对象的数组。
默认值: null
返回
(void|string) 如果'echo'参数为true,或者没有要列出的评论,则无返回。否则,返回HTML评论列表。
说明
$args的默认选项
$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' => '', 'format' => 'html5', // or 'xhtml' if no 'HTML5' theme support 'short_ping' => false, // @since 3.6 'echo' => true // boolean, default is true );
“max_depth
”、“per_page
”和“reverse_top_level
”参数可以通过管理面板(设置>讨论)更容易地控制,但主题可以覆盖这些设置。
源码
更新日志
版本 | 描述 |
---|---|
2.7.0 | 开始引入 |
使用示例
从Codex迁移的示例:
仅显示自定义评论
只显示评论(没有pingback或trackback),同时使用自定义回调函数控制评论的外观。如果没有出现回复链接,您可能需要添加一个
max_depth=X
参数。<ul class="commentlist"> <?php wp_list_comments( 'type=comment&callback=mytheme_comment' ); ?> </ul>
您需要在主题的functions.php文件中定义自定义回调函数。下面是一个示例:
function mytheme_comment($comment, $args, $depth) { if ( 'div' === $args['style'] ) { $tag = 'div'; $add_below = 'comment'; } else { $tag = 'li'; $add_below = 'div-comment'; }?> <<?php echo $tag; ?> <?php comment_class( empty( $args['has_children'] ) ? '' : 'parent' ); ?> id="comment-<?php comment_ID() ?>"><?php if ( 'div' != $args['style'] ) { ?> <div id="div-comment-<?php comment_ID() ?>" class="comment-body"><?php } ?> <div class="comment-author vcard"><?php if ( $args['avatar_size'] != 0 ) { echo get_avatar( $comment, $args['avatar_size'] ); } printf( __( '<cite class="fn">%s</cite> <span class="says">says:</span>' ), get_comment_author_link() ); ?> </div><?php if ( $comment->comment_approved == '0' ) { ?> <em class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.' ); ?></em><br/><?php } ?> <div class="comment-meta commentmetadata"> <a href="<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID ) ); ?>"><?php /* translators: 1: date, 2: time */ printf( __('%1$s at %2$s'), get_comment_date(), get_comment_time() ); ?> </a><?php edit_comment_link( __( '(Edit)' ), ' ', '' ); ?> </div> <?php comment_text(); ?> <div class="reply"><?php comment_reply_link( array_merge( $args, array( 'add_below' => $add_below, 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?> </div><?php if ( 'div' != $args['style'] ) : ?> </div><?php endif; }
注意缺少尾随
</li>
。为了容纳嵌套的回复,WordPress将在列出子元素后添加适当的结束标记。如果您正在使用WordPress 4.9.6或更高版本,并且没有显示“评论正在等待审核”警报。
您可以按照以下步骤操作。
–)设置->讨论-> 启用“显示评论cookie复选框”
–)激活后,复选框将显示在评论表单上,如下所示。“在此浏览器中保存我的姓名、电子邮件和网站,以便下次发表评论。”就是这样。
如果要自定义此复选框字段,可以使用此代码。
$comment_form = array( 'fields' => array( 'cookies' => '<p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes"' . $consent . ' />' . '<label for="wp-comment-cookies-consent">' . __( 'Save my name, email, and website in this browser for the next time I comment.' ) . '</label></p>', ), ); comment_form( $comment_form );
wp_list_comments()
本身不会做任何事情。它必须从评论模板文件内部调用。例如:
要在其中插入评论的页面/文章文件:
<?php comments_template('/comments.php'); ?> <?php /* Calling just comments_template() is also fine */ ?>
然后,在
comments.php
中:<div> <?php /* Add conditional checks, styling and arguments here... */ ?> <?php wp_list_comments(); ?> </div>
从Codex迁移的示例:
输出特定页面或文章的有序评论列表。诸如嵌套或分页的启用或禁用是通过(设置>讨论)控制的。
<ol class="commentlist"> <?php //Gather comments for a specific page/post $comments = get_comments(array( 'post_id' => XXX, 'status' => 'approve' //Change this to the type of comments to be displayed )); //Display the list of comments wp_list_comments(array( 'per_page' => 10, //Allow comment pagination 'reverse_top_level' => false //Show the oldest comments at the top of the list ), $comments); ?> </ol>
自定义默认的wp_list_comments()
<ol class="comment-list"> <?php wp_list_comments( array( 'avatar_size' => 60, 'max_depth' => 5, 'style' => 'ol', 'short_ping' => true, 'type' => 'comment', ) ); ?> </ol><!-- .comment-list -->
$cpage = get_query_var( 'cpage' ) ? get_query_var( 'cpage' ) : 1; wp_list_comments( array( 'avatar_size' => 60, 'short_ping' => true, 'type' => 'comment', 'callback' => 'ic_comment_list', 'per_page' => get_option( 'comments_per_page' ), 'page' => $cpage, 'reverse_top_level' => get_option( 'default_comments_page' ) === 'oldest' ? false : true, ) );