编写插件修改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.php到phpmyadmin/config.inc.php,打开修改如下参数:
$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一看:
if ( !get_option('gzipcompression') ) return false;
if ( extension_loaded('zlib') ) {
ob_start('ob_gzhandler');
}
}
ob_start(’ob_gzhandler’);正是第419行,果然是压缩功能引起的。Google了一把,似乎这是php的一个bug?取消勾选后已经恢复正常。