我们在使用wordpress默认的小工具,近期评论这个功能的时候,你会发现它会把管理员回复的内容也会显示出来,感觉有点多余。如果管理员一个一个回复用户的话,那侧边栏上面都是管理员的回复内容,方法有很多种,磊子自己重新做一个最新评论的小工具(widget)这样可以为大家巩固下前面说到的内容。

首先你得知道怎样创建小工具(widget),磊子在之前已经写过这方面的文章,大家可以先去这两个地方了解一下,http://www.favortt.com/wordpress-widget-shuoming.htmlhttp://www.favortt.com/wordpress-widget-jiangjie-2.html 然后在看这篇文章,这样会比较清楚些,然后就是去掉管理员评论,我们只需要通过一条SQL语句就可以把它屏蔽掉。

磊子把完整代码给大家贴出来,然后做下解释:

class Lei_RecentCommentWidget extends WP_Widget_Recent_Comments {

//这里需要说明一下,之前文章说到的是定义的类继承的是WP_Widget,这里继承的是WP_Widget_Recent_Comments,原因很简单因为我们只需要将管理员的回复去掉,而其他的内容我们可以使用wordpress默认的最新评论的小工具,避免重复在写一次代码,提高效率。

       function Lei_RecentCommentWidget() {
		$widget_ops = array('classname' => 'widget_lei_recent_comments', 'description' => __('Lei - 最新评论','leizi') );
		$this->WP_Widget('lei-recent-comments', __('Lei - 最新评论','leizi'), $widget_ops);
	}

	function widget( $args, $instance ) {
		global $wpdb, $comments, $comment;

		extract($args, EXTR_SKIP);
		$title = apply_filters('widget_title', empty($instance['title']) ? __('最新评论','leizi') : $instance['title']);
		if ( !$number = (int) $instance['number'] )
			$number = 5;
		else if ( $number < 1 )
			$number = 1;
		else if ( $number > 15 )
			$number = 15;

//$number对文章进行的判断,这里默认最大显示15条评论。

		if ( !$comments = wp_cache_get( 'recent_comments', 'widget' ) ) {
			$comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE user_id !=1 and comment_approved = '1' and comment_type not in ('pingback','trackback') ORDER BY comment_date_gmt DESC LIMIT 15");
			wp_cache_add( 'recent_comments', $comments, 'widget' );
		}

//利用SQL语句将管理员的回复屏蔽掉,一般管理员的ID编号是为1的,所以我们只要将里面的条件语句中加上user_id!=1这段就可以了。以上的SQL语句就可以理解为评论审核通过的,并且用户ID不为1,评论类型不是pingback和trackback的评论内容显示出来。

              $comments = array_slice( (array) $comments, 0, $number );
//利用php函数array_slice得到我们想要的值,以数组的形式显示
?>
		<?php echo $before_widget; ?>
			<?php if ( $title ) echo $before_title . $title . $after_title; ?>
			<ul id="recentcomments"><?php
			if ( $comments ) : foreach ( (array) $comments as $comment) :
			?>

			<li class="recentcomments">

			<?php
			echo get_avatar($comment,28);//显示评论头像
			$content = apply_filters('get_comment_text', $comment->comment_content);
			$content = mb_strimwidth(strip_tags($content),0,'65','...','UTF-8');//截取内容来控制页面的排版
			$content = convert_smilies($content);//显示评论的图片
			echo '<span style="float:left; width:200px;">'.$content.'</span>';
			?>
             <div style=" clear:both; padding-top:10px; border-top:1px dashed #e0e0e0;">
			<?php
			echo sprintf(_x('%1$s on %2$s', 'widgets'), get_comment_author(), '<a href="' . esc_url( get_permalink($comment->comment_post_ID) ) . '">' . get_the_title($comment->comment_post_ID) . '</a>'); ?>

             //输出内容,以及评论者,在什么地方发表的评论。
             </div>
			</li>
            <?php endforeach; endif;?>
            </ul>
		<?php echo $after_widget; ?>
<?php
	}
}
?>

以上代码的功能大概效果就是磊子网站上侧边栏的最新评论。接着将上面的代码保存为php文件,例如命名为lei-recent-commnet.php,然后我们需要激活这个功能。可以再创建一个php文件比如叫register-widget.php,然后将刚刚创建好的lei_recent_commnet.php引入进来,方法是:

<?php  

include_once (TEMPLATEPATH . '/includes/widgets/lei-recent-comment.php');

//引入lei-recent-comment.php文件,这里注意修改成自己的文件目录

add_action("widgets_init", "add_lei_widgets");
function load_ts_widgets() {
	register_widget("Lei_RecentCommentWidget");
}
//激活这个功能
?>

这样做的目的是便于集中管理,如果以后我们还需要在进行添加的小工具(widget)的时候就可以直接对一个文件进行修改了。建议大家以后也这么做,良好的习惯可以为我们省很多的事情。

最后我再将register-widget.php文件引入到主题的functions.php里面就可以。方法和上面的一样。即:

require_once TEMPLATEPATH . '/includes/register-widgets.php';

//注意修改成自己的文件目录

这样一个最新评论的小工具了(widget)就制作好了。这里面涉及到了一些wordpress和php函数。如果大家对一些函数不清楚的,可以来这地方进行查阅(没有的话可以先去官网看看),http://www.favortt.com/wordpress-functions-class以后每次写的文章涉及到函数的,磊子都会在这个地址发布出来!这样有对函数不熟悉的就可以查阅的到了。