PHP 使用 GeoLiteCity 库解析 IP 为地理位置

关于把 IP 地址转换为地理位置可以使用网络上很多的 API,好处就是不用在本地存储一个 IP 数据库,而且一般网络上的 IP 库会自动更新,不利的地方就是太依赖于网络,性能表现也可能会弱些。比如像下面的 API:

http://api.hostip.info/get_html.php?ip=58.63.236.31
http://api.hostip.info/flag.php?ip=58.63.236.31

这里介绍 PHP 如何使用 GeoLiteCity.dat 库把 IP 转换为地理位置,GeoLiteCity.dat 可以在 http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz 下,解压出 GeoLiteCity.dat,即可,我们可以手动去更新新的 IP 库。

下面 PHP 解析 IP 的过程参考自 WordPress 插件 Visitor Maps and Who's Online 的实现。可以找到该插件的两个文件 include-whos-online-geoip.phpvisitor-maps.php 告诉了我们怎么做。你可以点击这里的链接下载到这两个文件 阅读全文 >>

语法加亮插件 SyntaxHighlighter 的好伴侣,轻便的 TinyMCE 工具按钮

用 SyntaxHighlighter 有一段时间了,版本从 1.x、2.x,到现在的最新版本是 3.0.83,1.x 和 2.x 相差较大,2.x 到 3.x 未感觉多大的变化。SyntaxHighlighter 原来是在 google 中的项目,http://code.google.com/p/syntaxhighlighter/,现在由 DbNetLink 赞助,项目移至:http://alexgorbatchev.com/SyntaxHighlighter/

在 WordPress 中关于应用 SyntaxHighlighter 进行语法加亮有众多的插件支持,搜索 SyntaxHighlighter 就知道了。但是为 TinyMCE 辅助的工具按钮却未找到一个较好用的,之前也有介绍过:给 TinyMCE 添加一个语法加亮插件的工具按钮,也是根据某个插件进行修改的。不如之处就是点击按钮后还需与服务端作一次交互,这对于使用国外较慢的空间有些受不了。 阅读全文 >>

让 All in One SEO Pack 插件适用于截取中文描述

建议看过这里来 WordPress 插件 All in One SEO Pack 生成中文描述的解决

对于 SEO 来说,Title、Description、Keywords 是很重要的,尤其是前两者,它们直接反应在搜索引擎的条目中。对于英文博客来说 All in One SEO Pack 是做得很不错的,自动截取的描述完全能胜任。然而中文字符集的问题,依然按照英文那样来计算长度截取描述的话,你会发现在搜索引擎出来的条目中描述基本过短,因为 UTF8 的字符基本是一个顶 3。

所以要用这个插件来支持中文博客,那就得改,改改更健康。很多人说 All in One SEO Pack 影响了 Baidu 的收录,我不觉得,因为我一直用它,挺好的。

下面说说怎么来改它使之更好的支持中文,需要改动的文件只有一个,就是 aioseop.class.php。这里所针对的版本是今天的最新版 1.6.13,有三处要改动。 阅读全文 >>

xampp 错误:Deprecated: Assigning the return value of new by reference is deprecated

WordPress 3.0.1 之前是在 xampp 1.7.1 中运行的,没什么问题,php 版本为 5.2.9。后来升级 xampp 到 1.7.3 版,打开网站最上方出现提示:

Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\htdocs\footnoted\wp-content\plugins\simple-tags\inc\client.php on line 1700

这是插件 simple-tags 里的代码,定位到该行是:

$error = & new WP_Error('invalid_taxonomy', __('Invalid Taxonomy'));

而 WP_Error 是用 function 进行定义的:

function WP_Error($code = '', $message = '', $data = '') 阅读全文 >>

修正 FeedBurner Stats by DevMD.com 插件统计图中的月份显示错误

Feed 的烧制(代理) 程序还是 FeedBurner 有名,结果也是因为它让消息传得太快了,所以被墙了,才有了国内的 FeedSky。如同 Google 当年的遭遇一样才成就了百毒。

FeedBurner 在自由的国家里用得还是很广泛,所以你的客户群是那些人的话,还是值得去使用 FeedBurner。假如是用 WordPress 建站的话,你可以安装 FeedBurner Stats by DevMD.com 插件来查看 Feed 的订阅情况,以统计图形直观的显示。

这里是它的界面截图:http://wordpress.org/extend/plugins/feedburner-stats-by-devmdcom/screenshots/

但是对于该插件的当前版本 0.1.6 的统计图在月份显示时还有个 Bug,就是月份相差 1,比如当前是 10 月,图中却显示为 November,11 月。

阅读全文 >>

WordPress 3.0.1 中被迫用 fetch_feed() 替换 fetch_rss() 来获取 rss 数据

前一个多月中都是用 fetch_rss() 函数 (定义在 wp-includes/rss.php 中) 来获取外部 RSS 数据的,代码如下:

当然,你可以用 wp_rss() 或 get_rss() 直接在页面上显示获取的 rss 记录,我是需要处理 $articles 数组变量的。 阅读全文 >>

几款 WordPress 客户端的功能介绍(一)

其实一直以来,我写博客都比较喜欢在线来写,省得装那些客户端,主要是曾经试用 Windows Live Writer 写出的东西垃圾代码太多,且文件上传时目录不好控制。不能因为一次不愉快的经历就害怕十年吧。为什么又再次提起博客的离线客户端呢?因为现在风声吃紧,特别是对于使用国外空间的,你非常的谨慎的写着,该避讳的地方也避了,还是不知哪个字成敏感词,一提交,网络被重置,完蛋了,抓逛也无济于事,一切重来,如果你没有事先 Ctrl + C 的话。所以我现在网上养成了一个良好习惯,写一段话在提交之前必按 Ctrl + C。

找个博客的客户端程序是十分必要的,由于我的是用的 WordPress,所以在此介绍几款支持 WordPress 的客户端。有了 WordPress 客户端不光可以不受胡萝卜的侵扰,还能让你无论何时何地自由的书写,连上线后即发布,上传图片文件等事也省了许多麻烦,还有更多的在线编辑不能提供的功能。

阅读全文 >>

定制 WordPress 的 Rss 输出到 <!--more-->

Wordpress rss summary看来我真是浸淫在了 WordPress 里,俗称工欲善其事,必先利其器,也不知道想把这一器磨成多利。大约和当初结识 Joomla 时同样的境遇,难道要变大杀器不成?接连都几篇与 WordPress 相关的内容,反而把主业给抛在了一边。

好了,都是实际的问题,我的文章里因为有一些代码什么的,所以选择了用 <!--more--> 的形式显示片断,而不是用的摘要,虽然摘要也有可视编辑器,但还是用 <!--more--> 一点鼠标方便些。但是问题又有了,文章列表页里是显示了 more 前面的内容,但 RSS 不好控制,因为文章没有摘要,所以在后台 Settings/Reading 里无论选择 Rss 输出是 Full Text 还是 Summary 都会以全文的方式输出。选择 Summary 时,WordPress 看到没有填写文章摘要就会代之以全文。 阅读全文 >>

《Blog 启示录- WordPress 博客建设与经营》观感 -- 续

客观的说,阅读本书的收获并不大,学了些东西,点点滴滴,零零碎碎的。上回话说到何处,今天接着记录。

通过我们在 General Settings 里都是把 WordPress address (URL) 和 Site address (URL) 设置成一样的,但它们可以不一样的。比如说 wordpress 整个目录传到了虚拟主机中,默认的你要用 http://yanbin.blog/wordpress 的方式来访问,这当然不太好看,你希望用 http://unmi.cc 的 URL 来访问,可以用的做法是把 wordpress 下的文件放在虚拟主机根目录中。

另一种做法是仍然让保留 wordpress 目录,把其中的 index.php 以及 .htaccess 两个文移到根目录下,再编辑这个 index.php 文件,把其中的 阅读全文 >>

WordPress 里要某功能时,你会去找插件还是修改代码

用 WordPress 建站当初,每每想到要某一功能时首先想到的是有没有相关的插件,而不去思考可通过改哪里的代码来实现。因而造成插件的数量日渐膨胀,直接 40 多个插件同时绽放,还曾引以为豪。

最初的想法是尽量不去修改 WordPress 的代码,用第三方插件,待到以后升级 WordPress 本身时会很方便,不用担心被覆盖的危险。还有就是老觉得配置插件比改代码更易于操作。但是忽略了主题文件也是 WordPress 外围的元件,改改主题文件中的代码又何妨,而且更多时候也只需要改主题中的某个文件。

找第三方插件的结果是,数量多的话肯定要拖累 WordPress,因为不是用 Action 就是用 Filter 来拦截。到现在感觉慢了要整理插件的时候, 阅读全文 >>