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;
functionality-comments-01

另一个注释。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( __( '&larr; Older Comments', 'twentythirteen' ) ); ?></div>
				<div class="nav-next"><?php next_comments_link( __( 'Newer Comments &rarr;', '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可以分解为以下部分,以更好地理解。

  1. 模板标题
  2. 评论标题
  3. 评论清单
  4. 评论分页
  5. 评论是关闭消息
  6. 结束

模板标题

该模板从识别模板开始。

<?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( __( '&larr; Older Comments', 'twentythirteen' ) ); ?></div>
		<div class="nav-next"><?php next_comments_link( __( 'Newer Comments &rarr;', '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 -->

评论分页

如果您有很多评论(这使您的页面很长),那么请您的评论有许多潜在的好处。分页有助于提高页面负载速度,尤其是在移动设备上。
启用评论分页分两个步骤进行。

  1. 启用WordPress中的分页评论,通过设置>讨论,然后检查盒子“将评论分成页面”。您可以输入任何数字每个页面的最高评论”。
  2. 打开你的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' );

功能参考

检索评论元的功能参考

By zhuon

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注