WordPress免插件读者墙之页面版

  • A+
所属分类:随笔分享

关于读者墙这个话题已经折腾过好几回了,像之前的WordPress插件:wp- reader-wall读者墙是利用插件实现在文章或者页面中添加读者墙的效果。后来为了能在侧边栏里也能显示,所以后来又折腾了WordPress非插件读者墙

由于前段时间把wordpress从2.9.2升级到了3.0,而wp-reader-wall插件也随之失效。咨询了插件作者也并有得到回复,而且发现多数童鞋都有这样的问题,本想放弃使用此项功能的,不过昨天林西老九等童鞋建议还是把这个墙筑起来比较好。正好看到快乐啦-Happyla的WordPress升级3.0后里正好涉及到这个问题,二话没说,赶紧折腾。

折腾发现,首先要明确思路:

首先用页面版读者墙(和我以前的WordPress 非插件读者墙类似)代码建立一个读者墙模板,然后后台建立页面选择commentswall模板即可。

虽然看上去很简单,但我之前都没有注意到在编辑文章或者页面的时候还可以选择不同的模板,一般都是默认的模板。明确思路后就简单了,因为我对模板代码什么的不是很熟悉,所以直接利用的是主题自带的page.php也就是页面模板文件。打开page.php文件另存为commentswall.php文件,在最前面加上下面的代码:

[php]<?php
/*
Template Name: commentswall
*/
?>[/php]

表示要用调用commentswall模板,然后再在文件里面适当的位置添加非插件版读者墙的代码:

[php]<!-- start 读者墙 -->
<?php
$query="SELECT COUNT(comment_ID) AS cnt, comment_author, comment_author_url, comment_author_email FROM (SELECT * FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->posts.ID=$wpdb->comments.comment_post_ID) WHERE comment_date > date_sub( NOW(), INTERVAL 1 MONTH ) AND user_id='0' AND comment_author_email != '你自己的email地址' AND post_password='' AND comment_approved='1' AND comment_type='') AS tempcmt GROUP BY comment_author_email ORDER BY cnt DESC LIMIT 40";
$wall = $wpdb->get_results($query);
foreach ($wall as $comment)
{
if( $comment->comment_author_url )
$url = $comment->comment_author_url;
else $url="#";
$tmp = "<a href='".$url."' title='".$comment->comment_author." (".$comment->cnt.")'>".get_avatar($comment->comment_author_email, 40)."</a>";
$output .= $tmp;
}
$output = "<div id='readerswall'><h2>Most Active Friends</h2>".$output."</div>";
echo $output ;
?>
<!-- end 读者墙 -->[/php]

注意修改其中你的“email地址”以及你需要显示的头像大小及数目。先保存好此commentswall.php文件上传到你所用的主题目录下,最后在后台新建一个页面,内容自定,最后在右侧选择使用的模板文件为commentswall即可。到此,wordpress免插件读者墙之页面版就完美实现了,效果还是看我的给我留言

熟悉代码的童鞋还可以自己定义commentswall.php文件,不一定完全引用page.php里的内容,我这样做只是为了偷懒而已。如果还有什么问题可以参考朵夫的《WordPress升级3.0后》以及荒野无灯的《WordPress免插件版读者墙》

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:52   其中:访客  50   博主  0

    • 亿品元素 亿品元素 1

      已经折腾上了这功能

      • 求索阁 求索阁 3

        这个怎么让它在新窗口中打开读者墙里的网址啊?

          • admin admin 9

            @求索阁 貌似我的好像就是在新窗口打开的 你有没有设置过external 这个标签
            如果没有 可以参考我的一篇文章 利用jQuery实现链接在新窗口打开

          • 求索阁 求索阁 3

            我想只显示:最近三个月,留言超过三条的读者,怎么实现呀? :mrgreen:

              • admin admin 9

                @求索阁 试着把 “INTERVAL 1 MONTH”中的1换成3看看
                至于留言超过3条显示 你可以考虑控制总显示数量 这样一来留言较少的便不会显示了

              • fei0kite fei0kite 0

                我还在研究。悲哀。还未成功 :arrow:

                • sumvo波之 sumvo波之 1

                  不错 在用了 谢谢分享

                  • only博客 only博客 1

                    博主,本篇文章,代码部分,在你这里显示错位了,侧边栏都是这篇文章的代码,貌似你的single.php文件有问题

                    • 优趣 优趣 0

                      学习了、我去试试!

                      • SOHO一族 SOHO一族 2

                        博客人气很旺啊!可惜我对代码啥的一窍不通,现在没有插件能实现了吗?