WordPress根据设置和代码在主题中显示评论comments.php
在您的WordPress主题中文件。
简单评论循环
// Get only the approved comments
$args = array(
'status' => 'approve',
);
// The comment Query
$comments_query = new WP_Comment_Query();
$comments = $comments_query->query( $args );
// Comment Loop
if ( $comments ) {
foreach ( $comments as $comment ) {
echo '<p>' . $comment->comment_content . '</p>';
}
} else {
echo 'No comments found.';
}
这comments.php
模板包含从数据库中提取注释并将其显示在主题中所需的所有逻辑。
在探索模板文件之前,您需要知道如何在适当页面上删除部分模板文件,例如single.php
。你会包裹评论 模板标签 在有条件的陈述中,因此只有在有意义的情况下才会提取comment.php。
// If comments are open or we have at least one comment, load up the comment template.
if ( comments_open() || get_comments_number() ) :
comments_template();
endif;
另一个注释。php示例
这是一个例子comments.php
二十三个主题包含的模板:
<?php
/**
* The template for displaying Comments.
*
* The area of the page that contains comments and the comment form.
*
* @package WordPress
* @subpackage Twenty_Thirteen
* @since Twenty Thirteen 1.0
*/
/*
* If the current post is protected by a password and the visitor has not yet
* entered the password we will return early without loading the comments.
*/
if ( post_password_required() ) {
return;
}
?>
<div id="comments" class="comments-area">
<?php if ( have_comments() ) : ?>
<h2 class="comments-title">
<?php
printf(
_nx(
'One thought on "%2$s"',
'%1$s thoughts on "%2$s"',
get_comments_number(),
'comments title',
'twentythirteen'
),
number_format_i18n( get_comments_number() ),
'<span>' . get_the_title() . '</span>'
);
?>
</h2>
<ol class="comment-list">
<?php
wp_list_comments( array(
'style' => 'ol',
'short_ping' => true,
'avatar_size' => 74,
) );
?>
</ol><!-- .comment-list -->
<?php if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : ?>
<nav class="navigation comment-navigation" role="navigation">
<h1 class="screen-reader-text section-heading"><?php _e( 'Comment navigation', 'twentythirteen' ); ?></h1>
<div class="nav-previous"><?php previous_comments_link( __( '← Older Comments', 'twentythirteen' ) ); ?></div>
<div class="nav-next"><?php next_comments_link( __( 'Newer Comments →', 'twentythirteen' ) ); ?></div>
</nav><!-- .comment-navigation -->
<?php endif; // Check for comment navigation ?>
<?php if ( ! comments_open() && get_comments_number() ) : ?>
<p class="no-comments"><?php _e( 'Comments are closed.', 'twentythirteen' ); ?></p>
<?php endif; ?>
<?php endif; // have_comments() ?>
<?php comment_form(); ?>
</div><!-- #comments -->
分解评论。php
以上comments.php
可以分解为以下部分,以更好地理解。
模板标题
该模板从识别模板开始。
<?php
/**
* The template for displaying Comments.
*
* The area of the page that contains comments and the comment form.
*
* @package WordPress
* @subpackage Twenty_Thirteen
* @since Twenty Thirteen 1.0
*/
接下来,有一个测试可以查看该帖子是否受密码保护,如果是的,则停止处理模板。
/*
* If the current post is protected by a password and the visitor has not yet
* entered the password we will return early without loading the comments.
*/
if ( post_password_required() )
return;
?>
最后,有一项测试可以查看是否有与此帖子相关的评论。
<div id="comments" class="comments-area">
<?php if ( have_comments() ) : ?>
评论标题
打印出出现在评论上方的标题。
使用 _nx() 翻译功能使其他开发人员可以提供替代语言翻译。<h2 class="comments-title">
<?php
printf(
_nx(
'One thought on "%2$s"',
'%1$s thoughts on "%2$s"',
get_comments_number(),
'comments title',
'twentythirteen'
),
number_format_i18n( get_comments_number() ),
'<span>' . get_the_title() . '</span>'
);
?>
</h2>
评论清单
以下片段使用 wp_list_comments() 功能。
<ol class="comment-list">
<?php
wp_list_comments( array(
'style' => 'ol',
'short_ping' => true,
'avatar_size' => 74,
) );
?>
</ol><!-- .comment-list -->
评论分页
检查是否有足够的评论来添加注释导航,并创建注释导航。
<?php if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : ?>
<nav class="navigation comment-navigation" role="navigation">
<h3 class="screen-reader-text section-heading"><?php _e( 'Comment navigation', 'twentythirteen' ); ?></h3>
<div class="nav-previous"><?php previous_comments_link( __( '← Older Comments', 'twentythirteen' ) ); ?></div>
<div class="nav-next"><?php next_comments_link( __( 'Newer Comments →', 'twentythirteen' ) ); ?></div>
</nav><!-- .comment-navigation -->
<?php endif; // Check for comment navigation ?>
评论是关闭消息。
如果评论不打开,则显示一条线,表明它们已关闭。
<?php if ( ! comments_open() && get_comments_number() ) : ?>
<p class="no-comments"><?php _e( 'Comments are closed.', 'twentythirteen' ); ?></p>
<?php endif; ?>
结束
本节结束注释循环,包括评论表格,并关闭评论包装器。
<?php endif; // have_comments() ?>
<?php comment_form(); ?>
</div><!-- #comments -->
评论分页
如果您有很多评论(这使您的页面很长),那么请您的评论有许多潜在的好处。分页有助于提高页面负载速度,尤其是在移动设备上。
启用评论分页分两个步骤进行。
- 启用WordPress中的分页评论,通过设置>讨论,然后检查盒子“将评论分成页面”。您可以输入任何数字每个页面的最高评论”。
- 打开你的
comments.php
模板文件并添加以下行,您希望出现注释分页。
<div class="pagination">
<?php paginate_comments_links(); ?>
</div>
替代评论模板
在某些情况下,您可能希望在主题中以不同的方式显示您的评论。为此,您将构建一个替代文件(例如Short-comments.php),并将其称为如下:
<?php comments_template( '/short-comments.php' );
用于替代注释模板的文件的路径应相对于当前主题根目录,并包括任何子文件夹。因此,如果自定义注释模板位于主题内部的文件夹中,则当调用时可能会如下:
<?php comments_template( '/custom-templates/alternative-comments.php' );
功能参考
- wp_list_comments():根据各种参数(包括管理区域中设置的参数)显示帖子或页面的所有注释。
- comment_form():此标签输出一个完整的评论表格,用于在模板中使用。
- comment_template():加载第一个参数中指定的注释模板
- paginate_comments_links():为当前帖子的评论创建分页链接。
- get_comments():通过可能使用参数检索评论
- get_appraved_comments():检索提供的邮政ID的批准评论。