comments_template();
函数调用评论的模板,评论功能是和读者交互的重要途径,今天我们来实现主题的评论功能。1、建立基本主题模板和安装主题
2、页头和页脚,加载引入我们主题必须的css,js文件
3、主题注册Bootstrap菜单、搜索框和导航
4、首页设计index.php
5、创建single.php页
6、创建sidebar.php页
7、创建comments.php页
8、创建archive.php页
1、在single.php文章内容下面要显示评论的地方加入以下代码,通过comments_template();
函数调用评论页面comments.php。
<?php comments_template(); ?>
2、在我们的主题根目录下建立评论模板comments.php
,设计评论样式。
<section id="comments">
<h2>评论标题 </h2>
<ol> 评论内容列表</ol>
</section>
<ul class="pager">
<li class="previous"> 上一页 </li>
<li class="next"> 下一页 </li>
</ul>
3、加入代码
<section id="comments">
<h2>
<?php printf(
_n( '“ %2$s ” comment %1$s',
'“ %2$s ” comments %1$s',
'bootstrapwp'
),
'<span class="badge badge-important">' . get_comments_number() . '</span>',
get_the_title()
);
?>
</h2>
<ol>
<?php wp_list_comments(); ?>
</ol>
</section>
get_comments_number()
获得评论的数量
get_the_title()
获得标题
wp_list_comments()
获取评论内容列表
4、使用自定义bootstrap评论列表
修改如下,首先我们要自定义评论列表,其中bootstrapwp_comment自定义的回调函数。建议你必须阅读 wp_list_comments()使用回调函数自定义评论展示方式
<ol>
<?php wp_list_comments( array(
'callback' => 'bootstrapwp_comment',
) ); ?>
</ol>
bootstrapwp_comment
,函数方法如下:/**
* 评论列表的显示
*/
if ( ! function_exists( 'bootstrapwp_comment' ) ) :
function bootstrapwp_comment( $comment, $args, $depth ) {
$GLOBALS['comment'] = $comment;
switch ( $comment->comment_type ) :
case 'pingback' :
case 'trackback' :
// 用不同于其它评论的方式显示 trackbacks 。
?>
<li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>">
<p><?php _e( 'Pingback:', 'bootstrapwp' ); ?> <?php comment_author_link(); ?> <?php edit_comment_link( __( '(Edit)', 'bootstrapwp' ), '<span class="edit-link">', '</span>' ); ?>
</p>
<?php
break;
default :
// 开始正常的评论
global $post;
?>
<li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>">
<article id="comment-<?php comment_ID(); ?>" class="media comment">
<div class="pull-left">
<?php // 显示评论作者头像
echo get_avatar( $comment, 64 );
?>
</div>
<?php // 未审核的评论显示一行提示文字
if ( '0' == $comment->comment_approved ) : ?>
<p class="comment-awaiting-moderation">
<?php _e( 'Your comment is awaiting moderation.', 'bootstrapwp' ); ?>
</p>
<?php endif; ?>
<div class="media-body">
<h4 class="media-heading">
<?php // 显示评论作者名称
printf( '%1$s %2$s',
get_comment_author_link(),
// 如果当前文章的作者也是这个评论的作者,那么会出现一个标签提示。
( $comment->user_id === $post->post_author ) ? '<span class="label label-info"> ' . __( 'Post author', 'bootstrapwp' ) . '</span>' : ''
);
?>
<small>
<?php // 显示评论的发布时间
printf( '<a href="%1$s"><time datetime="%2$s">%3$s</time></a>',
esc_url( get_comment_link( $comment->comment_ID ) ),
get_comment_time( 'c' ),
// 翻译: 1: 日期, 2: 时间
sprintf( __( '%1$s %2$s', 'fenikso' ), get_comment_date(), get_comment_time() )
);
?>
</small>
</h4>
<?php // 显示评论内容
comment_text();
?>
<?php // 显示评论的编辑链接
edit_comment_link( __( 'Edit', 'bootstrapwp' ), '<p class="edit-link">', '</p>' );
?>
<div class="reply">
<?php // 显示评论的回复链接
comment_reply_link( array_merge( $args, array(
'reply_text' => __( 'Reply', 'bootstrapwp' ),
'after' => ' <span>↓</span>',
'depth' => $depth,
'max_depth' => $args['max_depth'] ) ) );
?>
</div>
</div>
</article>
<?php
break;
endswitch; // end comment_type check
}
endif;
5、使用自定义bootstrap表单元素
下面我们把姓名,email,url,提交按钮换成Bootstrap样式。
<?php
$commenter = wp_get_current_commenter();
$req = get_option( 'require_name_email' );
$aria_req = ( $req ? " aria-required='true'" : '' );
$comment_form_args = array(
// 添加评论内容的文本域表单元素
'comment_field' => '<label for="comment" class="control-label">' .
_x( 'Comment', 'noun' ) .
'</label>
<textarea id="comment" name="comment" cols="45" rows="5" class="form-control" aria-required="true">
</textarea>',
// 评论之前的提示内容
'comment_notes_before' => ' ',
// 评论之后的提示内容
'comment_notes_after' => ' ',
// 默认的字段,用户未登录时显示的评论字段
'fields' => apply_filters( 'comment_form_default_fields', array(
// 作者名称字段
'author' => '<label for="author" class="control-label">' . __( 'Name', 'bootstrapwp' ) . '</label> ' . ( $req ? '<span class="required help-inline">*</span>' : '' ) .
'<div class="controls">' .
'<input id="author"class="form-control" placeholder="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' />'.
'</div>',
// 电子邮件字段
'email' => '<label for="email" class="control-label">' . __( 'Email', 'fenikso' ) . '</label> ' . ( $req ? '<span class="required help-inline">*</span>' : '' ) .
'<div class="controls">' .
'<input id="email" class="form-control" placeholder="email" name="email" type="text" value="' .
esc_attr( $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' />' .
'</div>',
// 网站地址字段
'url' => '<label for="url" class="control-label">' . __( 'Website', 'bootstrapwp' ) . '</label>' . ( $req ? '<span class="required help-inline">*</span>' : '' ) .
'<div class="controls">' .
'<input id="url" class="form-control" placeholder="url"authorname="url" type="text" value="' .
esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></br></div>' )
) );
?>
<?php comment_form( $comment_form_args ); ?>
现在效果如下: