学着自己修改了一下WordPress
博客与网络 January 27th, 2007
前几天换服务器的时候顺手把blog后台程序WordPress升级到了最新版2.1。升级前就听网友说2.1是一次主要升级,改动不小,升级之后果然发现了一堆问题。最郁闷的就是侧边栏里的友情链接坏掉了。
以前为了让每一个分类单独用一个div块,没有像默认模版那样简单地写一句wp_list_bookmarks(),而是采用WordPress官网的写法,把链接的category和name分别读取显示。
<?php $link_cats = $wpdb->get_results("SELECT cat_id, cat_name FROM $wpdb->linkcategories");
foreach ($link_cats as $link_cat)
{ ?>
<div class=panel id="linkcat-<?php echo $link_cat->cat_id; ?>">
<h5><?php echo $link_cat->cat_name; ?></h5>
<DIV class=panel-content>
<UL><?php wp_get_links($link_cat->cat_id); ?></UL>
<BG>
</DIV>
</div>
<?php
}?>
WordPress升级到2.1之后这一块就坏掉了,提示说数据库错误。没办法,不知道该问谁,只好学着自己读一下WP。反正早晚得学。升级前的数据库幸好保留了一份,对照着看了一下,发现数据库有两点改动。
一是cat_id改成了cat_ID。盘古是对大小写敏感的虚拟主机,这会导致找不到get_results函数cat_id项。解决办法是把代码中cat_id统统改成cat_ID。
二是数据库的linkcategories(链接分类)表合并进了categories(文章分类)表,链接分类放在了文章分类之后。这导致get_results("SELECT cat_id, cat_name FROM $wpdb->linkcategories")这一句失效,因为不存在linkcategories表。我首先试着把调用get_results函数时的linkcategories改成categories,但是这样不但输出了链接分类,同时还输出了文章分类,这显然不是我想要的。再观察发现categories表中增加了一项link_count,应该是WordPress 2.1新增加的,用于记录该分类下有多少个链接。因此我在每一个foreach的循环中根据link_count是否为零来判断是否为链接分类,从而正确地输出。
修改后的代码为
<?php $link_cats = $wpdb->get_results("SELECT cat_ID, cat_name, link_count FROM $wpdb->categories");
foreach ($link_cats as $link_cat)
{
if ( $link_cat->link_count )
{ ?>
<div class=panel id="linkcat-<?php echo $link_cat->cat_ID; ?>">
<h5><?php echo $link_cat->cat_name; ?></h5>
<DIV class=panel-content>
<UL><?php wp_get_links($link_cat->cat_ID); ?></UL>
<BG>
</DIV>
</div>
<?php
}
}
?>
这是我第一次自己动手阅读并修改WordPress代码。虽然为了这么点小事前后折腾了一个多小时,还是觉得很高兴的。毕竟一个对php语法和WordPress函数数据结构一无所知的菜鸟,现在知道了<?php和?>得配对但是不必在同一个花括号{}里面,知道了简单的php判断语句,连蒙带猜地知道了wp_get_links和wpdb->get_results两个函数的用法,并且最终凭借这些东拼西凑的三脚猫功夫发现并解决了实际问题。
January 27th, 2007 at 3:32 am
。。。。
几乎全部看不懂
January 27th, 2007 at 12:15 pm
折腾一小时不多啊,我经常整天整天折腾
前一个?>和下一个<?php中间的东西,就好像调用print或echo一样,全输出到网页上
January 27th, 2007 at 2:56 pm
感觉还是有点乱,ID和categories不好区分,不如之前的,呵呵
January 27th, 2007 at 5:10 pm
虽然看不懂,但我活过来后还是给一声“赞,加油”
January 28th, 2007 at 12:52 am
你是牛人,折腾的东西和我不是一个量级的
January 28th, 2007 at 1:14 am
手动换行比较麻烦,我还是换个醒目的颜色好了
January 29th, 2007 at 1:23 am
赞。。。
我也要学php~~~
January 29th, 2007 at 11:27 pm
全部都换成静态链接了?那一个个修改标题,多费劲啊?还是一开始就设置缩略标题了?
January 30th, 2007 at 12:18 pm
一个一个修改的。。。静态链接感觉挺好
February 3rd, 2007 at 7:15 pm
有一个非常奇怪的问题,同样用盘古的空间,我的网站经常要刷新一两次才能进入,而你的每次都非常顺利。盘古解释是因为我在网通,经常网络阻塞,为啥我访问你的却一直很快呢?你进行了优化?还是我弄错了一些地方?
February 4th, 2007 at 9:53 am
我没有优化过,可能是因为我只用一些简单插件的缘故,网页打开不太费力。你的页面打开确实有些吃力,尤其是前半截有sidebar的部分,拖动的时候时常会lag,不知道是不是你用了ajax元素?