352 views 七月 22, 10 by Timothy
wp-reader-wall是个有意思的插件,能在页面列出最近评论过的同学的头像。采用照片墙的方式,展示给用户,并且,头像的排序是根据评论的条数来排序的。
自从上次升级WordPress到3.0后,发现者插件没有正常工作了,索性禁用了此插件,也没时间仔细研究。今天特闲,所以决定拿这插件来研究研究。发现导致插件工作不正常的地方,是在插件的代码中定义select的sql语句,取读者数据的时候出了问题。把这句sql从插件中挖出来,在线上环境的mysql中执行了一下,果然取不到数据。刚开始,怀疑是sql语句的where条件的问题,后来逐个排除,没发现异常。最后,把重点放在了表名上,插件里面是用的一个全局变量:$tablecomments 来表示评论的表,索性直接替换成wp_comments试试,果然能取到数据了。看来$tablecomments在WordPress 3.0中失效了。去wordpress搜了一下,官方提到$tablecomments变量是不推崇的方式,可能已经被弃用。官方还建议了一些其他的全局变量的替代办法,如下:
这样,我们可以遵循官方的建议,在WP-Reader-Wall插件的select语句中,用$wpdb->comments替代原来的$tablecomments,这样,插件就能正常在WordPress 3.0下使用了。总结了一下,关于WordPress升级遇到的一些问题,可以直接查阅官方文档,还有就是参考每个版本之间的变化,包括变量定义,以及数据库改动。这才是最好,最直接的办法。
具体修改方法,在WP-Reader-Wall.php中,找到如下的代码:
1
| $request = "SELECT count(comment_ID) comment_nums,comment_author, comment_author_email,comment_author_url FROM $tablecomments where comment_date》'".$cur_time_span."' AND comment_type='' AND comment_approved=1 group by comment_author_email order by count(comment_ID) DESC "; |
修改为:
1
2
3
| $request = "SELECT count(comment_ID) comment_nums,comment_author, comment_author_email,comment_author_url FROM ".$wpdb->comments.
" where comment_date>'".$cur_time_span."' AND comment_type='' AND comment_approved=1 group by comment_author_email order by count(comment
_ID) DESC "; |
209 views 七月 03, 10 by Timothy
最近看了一篇SEO相关的文章,感觉比较有帮助。虽然keywords对现在的搜索引擎来说,已经不是很重要了,不过给文章和首页加上一些keywords也是有必要的。另外一个就是description,google貌似对description还是有一定重视的。Wordpress也有相关的SEO插件,比较出名的是All in on SEO pack,不过貌似对中文支持不是太好。在网上寻得一段PHP脚本代码,添加在header.php模板中,能自动为首页设置好keywords和description。并且,在文章页面,能自动截断部分文章内容作为描述,也能自动把文章的tag加为keywords,感觉还不错,在此分享一下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| <?php
//判断是否为首页
if (is_home()) {
$description = "你的站点描述";
$keywords = "你的关键词";
//判断是否为文章页
} else if (is_single()) {
if ($post->post_excerpt) {
$description = $post->post_excerpt;
} else {
$description = mb_strimwidth(strip_tags(
apply_filters('the_content',$post->post_content)
),0,220);
}
$keywords = "";
$tags = wp_get_post_tags($post->ID);
foreach ($tags as $tag ) {
$keywords = $keywords . $tag->name . ",";
}
//判断是否为分类页
} else if (is_category()) {
$description = category_description();
}
?>
<meta content="<?php echo $keywords; ?>" name="keywords" />
<meta content="<?php echo $description; ?>"name="description" /> |
将此段代码放入到header.php中的meta部分即可。
71 views 六月 19, 10 by Timothy
Lazy Load是基于jQuery的插件,能让页面的加载更加有序。在遇到图片比较多的页面的时候,就更能派上用场了。由于Blog加载了jQuery,正好也可以用上这个。
具体的设置,可以参考A-Shun同学的相关文章。启用后试用了一下,效果还不错。推荐有兴趣的同学也试试。
6 views 六月 17, 10 by Timothy
近期对Blog改动较多,不过俺发现对自己Blog还是有许多不太满意的地方,所以又开始折腾了。
1.首先,增加了Blog顶部和尾部快速滚动的功能,大家可以看到在Blog左下角,有一个向上和向下的箭头图标,点击相应的图标,即可实现Blog顶部和尾部的快速滚动了。其实当初是想作成在Blog尾部双击鼠标,就可以快速回到Blog顶部的,后来林木木同学提议这样做会在用户填写评论的时候,不小心双击,有一定的冲突。后来,就做成了左下角的滚动图标。滚动图标的图片,是从网上找来的,滚动图标的CSS实现,是从ZWW同学那里偷师来的,滚动效果,jQuery实现,也是从林木木同学那里偷师来的。
2.将右上角的twitter,facebook,rss三个图标图标和左下角的快速滚动图标,加上了动态效果。默认是半透明的,鼠标悬停后,变为不透明,CSS实现。效果还不错,感觉有用的同学,可以直接参考本Blog的CSS样式表了。
3.第三个改动,也是我感激挺有用的。常常评论的同学,每次都要重复输入用户名、邮箱和网页地址,这是相当繁琐的,为了改善体验,参考了林木木同学的一篇文章。原理是通过PHP获取用户的Cookie,把先前的用户名、邮箱、网页地址统统取出来,默认给填好,并把这三个框给隐藏起来。这样看起来就好像用户已经登录的样子,再也不用重复输入了。这项改动挺实用的,确实能为你的Blog改善不少的用户体验,建议有兴趣的同学都能用上。
4.启用了Google XML Sitemap插件,这个,不用说了,感觉很重要的插件,不过我现在才启用……
5.为文章标题的点击事件,加上了jQuery效果。点击时,显示”页面加载中…”,然后进行跳转,感觉这样变动态了一些。
这次的折腾,就到这里了,尽管是偷师,但是感觉也从中学到了不少,特别是CSS和jQuery。或许以后还会对Blog进行更多的改进,等下次再折腾了。
52 views 六月 12, 10 by Timothy
很久没整理下Blog了,这次对Blog的一些插件做了一些调整和更新。
为了优化一下Blog访问速度和用户体验,正式启用了WP Super Cache插件。Nginx下需要单独在配置文件中设置一下,生效后,随便访问几个页面,看到Blog的wp-content/cache目录下生成文件了,表示成功启用了。设置的方式,可以参考久酷同学的一篇文章。
另外,貌似WP Super Cache插件和WP-PostViews插件有一些冲突,启用了WP Super Cache后,发现文章计数停住不动了,估计是因为生成了静态页面的关系。想了一下,俺的文章其实访问量并不是很大,显示一下文章访问量意义也不太明显,所以为了性能的缘故,暂时停用了WP-PostViews插件。网上貌似有关于这两个插件冲突的解决方法,不过今天暂时没时间细细研究了,空了再试试。
最后,替换掉一个评论者信息的插件Comment Info Detector,感觉WP-UserAgent能检测的浏览器和操作系统的版本更多一些,所以用了它。
其实俺比较喜欢的是WP Super Cache这个插件,希望它对Blog的访问速度有一定的提升。嗯,观察几天Blog访问情况就知道结果了。
548 views 五月 21, 10 by Timothy
WP-CodeBox 是我的WordPress一直使用的,一个可以方便的在文章中嵌入代码的插件。它使用起来非常便捷,而且支持众多的编程语言,对于咱开发人员来说,真的是一大福音。当初从wordpress.org的官网比较了几款代码插入的插件,最终我还是选择了它。CodeBox除了支持众多编程语言外,而且在展示代码的时候,有漂亮的外观(如下图),并且代码框使用脚本实现了动态的代码折叠效果。在浏览的时候,用户可以通过单击按钮随时折叠代码,也节约了屏幕空间。

CodeBox的使用也非常简单,举个最简单的例子,只要在文章中写入下列代码,插入你的程序代码即可:
insert your code here…
其中的language code,是编程语言的代码,让插件知道,你插入的代码是属于哪种语言。
当然还可以插入文件,供别人下载,也可以通过设置让其是否显示折叠和代码行,等等,相关功能都可以在wordpress官网中该插件的页面找到。
对于CodeBox支持的众多编程语言,俺在OneNote中整理了一份language code和具体编程语言的对照表,这样可以一目了然的知道你的编程语言,对应的language code是啥了。我把对照表导出成一了份PDF,放在俺的Sky Drive,供大家下载。
111 views 四月 28, 10 by Timothy
从久酷那里偷师来的Reader Wall,显示本站点所有参加评论的同学,此功能还不错,能增加博友之间的互动性。其实这插件一直就装上了,只是一直设置为私有页面。现在评论的博友稍微多一些了,打算开放此页面,同学们可通过右上角菜单访问。
1,170 views 二月 17, 10 by Timothy
为了Blog日后的改进和完善,偶越来越需要一个本地的测试环境。毕竟,直接在本地改程序,再上传到线上看修改后的效果,这是比较有风险的做法,并且也很不规范。由于WordPress是基于PHP的,而偶的操作系统又是Win7,首选的做法,就是用IIS+PHP+MySQL来搭建测试环境。并且,Windows下面配置起来没什么难度。不过我更倾向于Linux,所以选择了CentOS 5.4 + MySQL + PHP + Nginx,装在VirtualBox的虚拟机中。一来为了熟悉下Linux,二来是为了以后搞VPS先热点身,嘿嘿。
装好CentOS,没选择X Windows,直接用了Licess同学的一键安装包,非常方便。Licess同学为我们写好的Shell脚本里面,能自动完成下载、编译、安装的过程,省去很多繁琐的过程。安好后,需要根据自己的喜好更改一下设置即可。其中也遇到很多莫名其妙的问题,偶又是Linux新手,所以只有询问google老师,不过还好都找到了答案。待基础的几个软件都搞好之后,就可以安装WordPress了,然后将线上的博客内容通过PHPMyAdmin导出,再在虚拟机中导入即可,一个测试环境就OK了。另外,为了传文件的方便,还在CentOS上装了个vsftp,用以和Windows交换文件。经过这次折腾,发现原来Linux下面也这样好玩,打算以后多学习和折腾一下Linux,把家里那台N久没开过机的老台式机,也装个Ubuntu玩玩。

