WordPress创建评论小工具(widget)及评论不显示管理员回复内容

十二月 23
磊子 2011年 16 条评论

我们在使用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以后每次写的文章涉及到函数的,磊子都会在这个地址发布出来!这样有对函数不熟悉的就可以查阅的到了。

» 版权所有©转载必须以链接形式注明作者和原始出处:磊子的博客 » WordPress创建评论小工具(widget)及评论不显示管理员回复内容
» 地址:( Ctrl+C 复制 )
» 如果对本站感兴趣,请到网站右下方订阅本站,将为你带来更多精彩和实用的文章
» 如果您对这篇文章感兴趣,不妨小小的 捐助(Donate)一下博主吧,不管多少都是对博主最大的支持和鼓励哟,博主-磊子感谢大家的支持!!!

16 条留言 其中:访客:9 条, 博主:6 条

  1. 北京SEO说:

    学习了,嘻嘻

  2. Youth.霖说:

    这个真高大上!不用改源程序,比其它方法好!

  3. Pingback: 彩色标签云 | 一个小小的博客

  4. 惠州SEO说:

    这个技术性太强了,搞不来 ,真的好想不在首页显示管理员的评论,难道没有适合我们这些菜鸟的方法么,怎么办?

    • 磊子说:

      这个其实就是最好的方法了,耐心点看看咯!呵呵! 或者像楼下说的那样操作也是可以的! 祝你成功!

  5. Duoqiu说:

    如果想直接加一段代码在functions要怎么加。。。

    • 磊子说:

      你可以将 function widget( $args, $instance )里面的代码拿出来,放到functions里面重新命名个方法。做下小小的修改就可以了!

  6. 好厉害啊,我还是用插件吧 :neutral: :neutral:

  7. 520PC说:

    不错 :razz:

  8. 妃子笑说:

    你的博客模板真的挺好看的,请问一下这个模板的名字是什么,能不能给个关键字我在网上找一下?谢谢!

  9. 晕了!

说点什么吧




wireless earbuds moscow mule mugs bluetooth speakers waterproof camera best wireless earbuds best vacuum cleaner best drugstore foundation best dishwasher best waist trainer wireless headphones best vacuum 0594918 best bluetooth earbuds waterproof bluetooth speaker tattoo cover up action camera
订阅本站