在应用WordPress评论模板时,经常要用到评论的判断和查询,本文介绍了三个有用的函数,分别为have_comments()、get_comments_number()、comments_number(),从三个函数可以看出其区别和用法。
have_comments() 函数
用于确定是否有任何要循环的评论。位于 wp-includes/query.php
文件中。此函数依赖于在主循环(The Loop
)中要设置的全局变量 $wp _query
。
用法:<?php $have_comments = have_comments(); ?>
返回值为布尔型变量:如果当前查询有可用的评论, 则为 true, 否则为 false。
注意:在评论模板 comments_template()
被调用之前,此函数将始终返回 "false " 。因此,如果需要在调用 comments_template()
之前检查评论,应改用 get_comments_number()
函数代替。
可使用全局变量 $wp _query 来确定评论是否可用 (通过 have_comments 方法)。
本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利
举例:基于 Twentyten 主题的 comments.php 模板,评论标题等仅在评论可用时显示。
- <?php if ( have_comments() ) : ?>
- <h3 id="comments-title"><?php
- printf(
- _n( 'One Response to %2$s', '%1$s Responses to %2$s', get_comments_number(), 'twentyten' ),
- number_format_i18n( get_comments_number() ),
- '<em>' . get_the_title() . '</em>'
- );
- ?></h3>
- //[and more, of course...]
- <?php else : //或者,没有评论:
- if ( ! comments_open() ) : ?>
- <p class="nocomments"><?php _e( 'Comments are closed.', 'twentyten' ); ?></p>
- <?php endif; //结束 ! comments_open() ?>
- <?php endif; //结束 have_comments() ?>
本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利
get_comments_number() 函数
检索文章中评论、Trackbacks 和 Pingbacks 的总数。与 comments_number ()
不同,此函数将数值作为返回值。
用法:<?php $my_var = get_comments_number( $post_id ); ?>
。其中,$post_id 为文章ID(整数/对象)(可选),默认为当前文章 ID。
举例:欲使 get_comments_number()
函数像 comments_number()
函数一样工作,可以使用此代码。
- $num_comments = get_comments_number(); //get_comments_number 仅返回数值
- if ( comments_open() ) {
- if ( $num_comments == 0 ) {
- $comments = __('No Comments');
- } elseif ( $num_comments > 1 ) {
- $comments = $num_comments . __(' Comments');
- } else {
- $comments = __('1 Comment');
- }
- $write_comments = '<a href="' . get_comments_link() .'">'. $comments.'</a>';
- } else {
- $write_comments = __('Comments are off for this post.');
- }
本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2023. All Rights Reserved
comments_number() 函数
用于显示当前文章的评论、Trackbacks、Pingbacks 的总数。该标签必须在 WordPress 主循环(The Loop
)中。
如果要查询评论的具体数值,应使用 get_comments_number()
函数。
本文禁止无授权转载 - 时光在路上 www.timezls.com 保留所有权利
用法:<?php comments_number( $zero, $one, $more ); ?>
。 其中,$zero
表示没有评论时显示的内容(字符串)。默认为 'No Comments';$one
表示有一条评论时显示的内容(字符串,可选)。默认为'1 Comment';而 $more
则表示评论总数超过 1 时显示的内容(字符串)。用百分号“%” 来表示,默认为 '% Comments'。
举例:
根据评论数量显示文本:评论数为0时显示“no responses”,评论数为1时显示“one response”,评论多余1条时(例如42条)显示“42 responses”。
- <p>
- This post currently has
- <?php comments_number( 'no responses', 'one response', '% responses' ); ?>.
- </p>
评论部分显示标题:评论区上部显示标题和评论数。
- <h3>
- printf( _nx( 'One Comment', '%1$s Comments', get_comments_number(), 'comments title', 'textdomain' ), number_format_i18n( get_comments_number() ) );
- </h3>
本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2023. All Rights Reserved