如何为您的WordPress博客创建一个独立评论模板

一种有效激发访问者积极性的方法,就是在博客中显要的位置将他们的评论公开列出——包括评论最多的访问者和相关评论数最多的日志。其实,除了平时常见的评论显示方式外,我们也可以在自己的博客中为评论单独创建一个专页,将有关评论的一切都集中到一起,让所有的访问者在同一个地方就能够获得所有有关评论的信息。今天,就让我们来专门讨论一下这个问题——如何为博客创建一个独立评论模板

实现的方法并不难,大概步骤有以下几点:

  1. 先建立一个页面模板
  2. 在代码中通过执行SQL查询抓取带有各种参数的评论
  3. 创建一个只有管理员才能看到的评论统计专区
  4. 添加对Activity Sparks 插件(以曲线图形显示评论变化趋势)的支持

创建一个评论页面模板

创建一个页面模板最为简单的方法当然是将当前主题的页面文件page.php复制一份出来。以我使用的Thematic框架主题为例子,先打开page.php文件,里面的部份内容如下:

<?php
// calling the header.php
get_header();
// action hook for placing content above #container
thematic_abovecontainer();?>
        <div id="container">
<?php thematic_abovecontent(); ?>
<div id="content">

//这里的内容我给删除掉了
</div> <!-- #content -->
<?php thematic_belowcontent(); ?>
</div><!-- #container -->
<?php
    // action hook for placing content below #container
thematic_belowcontainer();
    // calling the standard sidebar
thematic_sidebar();
    // calling footer.php
get_footer();
?>

简要说明:ID为”content”的那对<div>标签中间的内容我全部删除掉了(因为我觉得对自己没有用了,但是您也可以保留)。

既然是新建模板,我们得重新给它定一个名称——模板名,我这里将它命名为Comments Central 。好了,将下面的注释代码放到上面代码的最顶部:

<?php
/*
Template Name: Comments Central
 */
?>

保存此文件,文件名称可以随意定,最好带上一个前缀,以便于识别,我这里命名为”my-comment-central.php”,到此,一个新模板创建成功了。这个模板虽然已经可以使用了,但还是一个空白模板,我们还没有添加任何内容。下面开始添加内容。

抓取评论

这里我要添加的内容包括:

  • 最近评论
  • 最近引用通告(Trackbacks / Pingbacks)
  • 最活跃评论作者
  • 热评文章

1.首先是最近评论代码:

<div class="comments-central-section">
<h3>最近评论:</h3>
<ul>
<?php
// Recent comments
$max = 10; // item to get
global $wpdb;
$sql = "SELECT c.*, p.post_title FROM $wpdb->comments c INNER JOIN $wpdb->posts p ON (c.comment_post_id=p.ID) WHERE comment_approved = '1' AND comment_type not in ('trackback','pingback')";
$sql .= " ORDER BY comment_date DESC LIMIT $max";
$results = $wpdb->get_results($sql);
$template = '<div class="who">%g <a href="%au">%an</a> 在《<a href="%pu#comment-%cid">%pt</a>》上的评论:</div>';
$echoed=0;
foreach ($results as $row) {
$tags = array('%ct','%cd','%g','%pt','%pu','%au','%an','%cid');
$replacements = array($row->comment_title,$row->comment_date,get_avatar($row->comment_author_email,'32'),$row->post_title,get_permalink($row->comment_post_ID),$row->comment_author_url,$row->comment_author,$row->comment_ID);
echo '<li>' . str_replace($tags,$replacements,$template) . '<div class="said">'. $row->comment_content . '</div></li>';
$echoed=1;
}
if ($echoed==0)
echo '<li>找不到.</li>';
?>
</ul>
</div>

代码绿色部份中的数字“10”表示要显示的最近评论数,根据个人需要,可以改为别的数字。最近评论将以无序列表方式列出。参考文章: 20条实用的Wordpress PHP代码

2.最近引用通告代码:

<div class="comments-central-section">
<h3>最近引用通告:</h3>
<ul>
<?php
// Recent trackback / pingback
global $wpdb;
$sql = "SELECT c.*, p.post_title FROM $wpdb->comments c INNER JOIN $wpdb->posts p ON (c.comment_post_id=p.ID) WHERE comment_approved = '1' AND comment_type in ('trackback','pingback')";
$sql .= " ORDER BY comment_date DESC LIMIT $max";
$results = $wpdb->get_results($sql);
$template = '<a href="%au">%an</a> 在 <a href="%pu">%pt</a>上的引用.';
$echoed=0;
foreach ($results as $row) {
$tags = array('%ct','%cd','%g','%pt','%pu','%au','%an','%cid');
$replacements = array($row->comment_title,$row->comment_date,get_avatar($row->comment_author_email,'32'),$row->post_title,get_permalink($row->comment_post_ID),$row->comment_author_url,$row->comment_author,$row->comment_ID);
echo '<li>' . str_replace($tags,$replacements,$template) . '</li>';
$echoed=1;
}
if ($echoed==0)
echo '<li>找不到.</li>';
?>
</ul>
</div>

3.最活跃评论作者代码:

<div class="comments-central-section">
<h3>最活跃评论作者:</h3>
<ul>
<?php
// Most active commenter
global $wpdb;
$sql = "SELECT comment_author, comment_author_url, comment_author_email, count(comment_ID) as comment_count FROM $wpdb->comments WHERE comment_approved = '1' AND comment_type not in ('trackback','pingback')";
$sql .= " GROUP BY comment_author, comment_author_url, comment_author_email ORDER BY comment_count DESC LIMIT $max";
$results = $wpdb->get_results($sql);
$template = '<div class="who"<a href="%au">%g %an</a> (%c 条评论)</div>';
$echoed=0;
foreach ($results as $row) {
$tags = array('%g','%au','%an','%c');
$replacements = array(get_avatar($row->comment_author_email,'32'),$row->comment_author_url,$row->comment_author,$row->comment_count);
echo '<li>' . str_replace($tags,$replacements,$template) . '</li>';
$echoed=1;
}
if ($echoed==0)
echo '<li>找不到.</li>';
?>
</ul>
</div>

4.热评文章代码:

<div class="comments-central-section">
<h3>热评文章:</h3>
<ul>
<?php
// Most active discussion
global $wpdb;
$sql = "SELECT p.*, c.comment_count FROM $wpdb->posts p INNER JOIN (SELECT comment_post_id, count(comment_ID) as comment_count from $wpdb->comments WHERE comment_approved='1'";
$sql .= " GROUP BY comment_post_id) c ON (c.comment_post_id=p.ID) ORDER BY c.comment_count DESC LIMIT $max";
$results = $wpdb->get_results($sql);
$template = '<a href="%pu">%pt</a> (%c 条评论)';
$echoed=0;
foreach ($results as $row) {
$tags = array('%pd','%pt','%pu','%c');
$replacements = array($row->post_date,$row->post_title,get_permalink($row->ID),$row->comment_count);
echo '<li>' . str_replace($tags,$replacements,$template) . '</li>';
$echoed=1;
}
if ($echoed==0)
echo '<li>找不到.</li>';
?>
</ul>
</div>

参考文章:WordPress最简单实现热评文章代码

创建一个只有管理员才能看到的评论统计专区

要用到的代码如下:

<?php global $user_ID;
if( $user_ID ) :
if( current_user_can('level_10') ) : ?>
<?php
$num_comm = wp_count_comments();
?>
<div id="comments-central-admin">
<span>评论总数: <a href="<?php bloginfo('wpurl'); ?>/wp-admin/edit-comments.php?"><? echo $num_comm->total_comments; ?></a></span>
<span>获准评论: <a href="<?php bloginfo('wpurl'); ?>/wp-admin/edit-comments.php?comment_status=approved"><? echo $num_comm->approved; ?></a></span>
<span>待审评论: <a href="<?php bloginfo('wpurl'); ?>/wp-admin/edit-comments.php?comment_status=moderated"><? echo $num_comm->moderated; ?></a></span>
<span>垃圾评论: <a href="<?php bloginfo('wpurl'); ?>/wp-admin/edit-comments.php?comment_status=spam"><? echo $num_comm->spam; ?> </a></span>
</div>
<?php
  endif;
endif; ?>

这段代码用来显示评论的一些统计数据,只有管理员才能看到。如下图:

评论统计数据

添加对Activity Sparks插件的支持

Activity Sparks 是一款以曲线图形显示某段时间内评论变化趋势的WordPress插件。插件体积很小,只有两个文件,大家可以到WordPress插件库下载试用。

Activity Sparks

插件配有一个小工具,可从后台拖到侧边栏,就如上图所示一样。但是,我们还要在新模板中调用此插件,代码如下:

<?php
if(function_exists('activitysparks')) {
?>
<h3>最近两年的读者评论走势示意图:</h3>
<?php
activitysparks(array('dataset'=>'legend','height_px'=>100,'width_px'=>500,'period'=>30, 'ticks'=>24));
}
?>

调用代码带有一些参数,可以修改的,详细配置方法可查看插件自带使用说明。

原来的代码出自themelab,我拿来测试过出现了问题,我对其中的某些地方做了些修改后才正常,我已经在自己的博客中用上了,目前未发现任何问题。我对使用插件有些敏感,所以上面的Activity Sparks 我并没有安装,如果您不想用插件,将上面的调用代码删除即可。

我按照自己的需要将上面的代码整理了一下,整个模板代码您可以点此查看:Comment Certral,模板中的CSS样式大家可以自己设定,以符合个人要求为准。您也可以查看一下我博客的“评论中心”。

如无特别说明,本站文章皆为原创,若要转载,必须注明以下原文信息:
日志标题: 《如何为您的WordPress博客创建一个独立评论模板》
日志链接: http://www.chenchunlin.info/how-to-create-a-comments-central-page-template-in-wordpress.html
博客名称: Chenchunlinblog

This entry was posted in WordPress and tagged . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

欢迎发表评论

我们不会公开您的邮箱地址, 标有*号的是必填项哦!

*
*

您可以使用这些HTML标签及其属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>