编写插件修改Wordpress的RSS输出

编写插件修改Wordpress的RSS输出

Wordpress是一款著名的开源blog平台,基于php,其灵活的模板(theme)和插件(plugin)架构,使得扩展性非常的好,通过模板可以随心所欲的变化前端展示,通过插件则可以实现额外的功能。比如可以通过插件修改rss输出,在其中加上诸如版权声明,相关文章等功能。另外,强烈建议在rss全文输出内容,经常在Google Reader中看到一篇好文章却只有摘要,点过去发现网站又无法打开,这种感觉真让人抓狂。

MyWordpressFeed.txt下载后另存为MyWordpressFeed.php,修改FeedRelatedPost函数中相应的地方,传到wp-content/plugins目录,到后台管理激活MyWordpressFeed插件,即可获得和我的blog一样的rss输出效果。php我只是略知皮毛,代码贴出来给有需要的朋友参考(Update:贴了半天代码,发现coolcode插件无法解析这种php里又输出html的代码,只好打包成txt文件,点击这里可查看或者下载)。

配置phpMyadmin

昨天升级wordpress2.3,想在本地搭个测试环境,利用wordpress data backup插件的备份sql,本来想通过命令行mysql -uroot -ppasswd -Ddbname < backup.sql的方式导入,结果由于一个些垃圾留言导致备份出来的sql有很多语法问题。折腾了半天,想起mysql有个叫phpMyadmin的php软件很不错,dreamhost提供的就是这个。

于是下载,解压,放到apache的htdoc下。然后复制phpmyadmin/libraries/config.default.phpphpmyadmin/config.inc.php,打开修改如下参数:

$cfg['Servers'][$i]['host'] = 'localhost'; // mysql服务器
$cfg['Servers'][$i]['port'] = '';             // mysql端口
$cfg['Servers'][$i]['auth_type'] = 'config'; // 认证方式
$cfg['Servers'][$i]['user'] = 'root';   // mysql用户
$cfg['Servers'][$i]['password'] = 'passwd'; //密码

启动apache,浏览http://localhost/phpmyadmin,报错:

Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly.

得,看来php的设置有问题。搜google/baidu,找到php安装目录下的php.ini:

session.save_path=”c:/PHP/tmp” // 注意c:/php/tmp目录一定要存在
extension=php_mbstring.dll // 注意去掉默认的前面的分号,也就是启用该功能

这么折腾了半天,还是报错,晕。再搜网上,都是这么解决的啊。木有办法了,重启,好了-_-。Windows下重启有个时候真的是包治百病。

打开wordpress压缩选项导致warning

刚才勾选了“选项”->“阅读”->“如果浏览器要求,则 WordPress 应当在传输前压缩文章 (gzip) ”,结果导致FeedBurner页面出现警告:

无法显示 XML 页。
使用 XSL 样式表无法查看 XML 输入。请更正错误然后单击 刷新按钮,或以后重试。
——————————————————————————–

XML 文档只能有一个顶层元素。处理资源 ‘http://feeds.feedburner.com/NinGoo’ 时出错。第 2 行,位置: 2

Warning: ob_start() [ref.outcontrol]: output handler ‘ob_gzhandler’ cannot be used after ‘URL-Rewriter’ in /home/.moonstruck/ningoo/ningoo.net/wp-includes/functions.php on line 419
-^

找到functions.php一看:

function gzip_compression() {
    
if ( !get_option('gzipcompression') ) return false;
 
    
if ( extension_loaded('zlib') ) {
        
ob_start('ob_gzhandler');
    
}
}

ob_start(’ob_gzhandler’);正是第419行,果然是压缩功能引起的。Google了一把,似乎这是php的一个bug?取消勾选后已经恢复正常。