一个艰难的决定

从今天开始,将本Blog的单文章固定地址修改为 siteurl/i/postid 的形式,使文章链接更清爽。

由于历史原因,本Blog的单文章固定链接非常冗长,以至于经常出现地址栏都无法完全显示整个URL的情况,这是一个强迫症所无法接受的,并且在各大搜索引擎修改收录规则以后,那样的链接在SEO层面早就不具备任何实质性的意义,所以痛定思痛,来了个一刀切。

改革的阵痛总是存在的,比如,旧文章里面的站内链接,绝大部分都将要失效了,如果需要寻找文章,请试试搜索功能。如有意见或建议请给我留言,不甚感谢~

去除 wordpress 里面的 google fonts

最近使用 Google Fonts 做字体的网站越来越多了,最为典型的就要数 Stack Overflow 以及 WordPress 了,在天朝,访问使用了 Google Fonts 的网站有一个通病:访问极慢(原因你懂的),于是乎结果就是,如果你不去主动点击浏览器的停止加载按钮,页面就会一直被阻塞(通俗的说就是一片空白)。

尝试寻找一些浏览器级的解决方案,比如把 Google Fonts 自动干掉或者替换为大陆服务器一类的,但是无果。看来只有自己改造了,Stack Overflow 是不指望了,但是 WordPress 是掌握在我们自己手中的,想要干掉并不难,基本上从以下几个方面着手:

1. 使用插件 Remove Open Sans font Link from WP core,这个插件的功能和使用会像他的名字长度一样复杂,吗?不,他就是简单的把 WordPress 里面的 Google Fonts 干掉了,使用也很简单,添加后启用就行了;

2. 上面一条是针对 WordPress 后台管理页面的,如果想要去除主题里面的 Google Fonts 怎么办呢?找到主题文件里的 functions.php ,在文件末尾加上如下代码即可:

3. 其实1和2实现的功能是重复的,取其中的一个方案即可,但是我当时使用时,同时启用了以上两个方案后,页面中依然会加载 Google Fonts,这么丧心病狂的事情,最后经过我周密调查,发现是页面上的 Google Adsense 挂件干的,这家伙每次加载就会搞一个 iframe,然后里面的页面会加载 Google Fonts。考虑到挂了十几年的 Google Adsense 却从没有收到过他的支票(纯支持的赶脚啊,谁叫我是谷粉呢?),他不但不怀着一颗感恩的心提高一点我的搜索引擎排名,还给我的加载速度拖后腿,于是一怒之下,我就把这个挂件干掉了。于是乎,世界恢复了宁静,整个 Blog 前前后后都不再有讨厌的 Google Fonts 了。

你也想试试吗?那就赶快拿起键盘吧。

一次 WP 主题设置页面不显示的问题解决

由于更新了主题的相关配置,所以想在主题后台去设置一下,问题来了,主题的“选项”链接不见了,以为是主题的相关代码跟最新版的wordpress不兼容,查询了N个文档,主题改来改去依然无果,插件全部禁用也是一样,使用本地wordpress启用本主题却没有任何问题,说明不是主题代码的事。
访问 wp-admin/themes.php?page=functions.php 页面时显示 “你没有权限” 访问该页面,感觉应该是文件权限的问题:

You do not have sufficient permissions to access this page themes.php functions.php

根据提示语句 Google 之,按照网上各种方法(改主题代码、改文件权限等)修改后无果,郁闷了好几天,问题依然无法得到解决。但是隐约间觉得是自己安装的一个叫做 iThemes Security 的插件造成的问题,使用的时候就发现这家伙做了不少的改动。
但是禁用这个插件并不能修复问题,后来无意中发现自己的 wp-config.php 文件多了一句

顾名思义就是不让我在网页中修改 Theme 和 Plugin 文件嘛,干掉之,问题解决。

Blog 被黑了

一大早上起来就发现 BLOG 被黑,页面打不开,后台可以进。于是乎进行了自救。话说 WordPress 的安全性真不是一般的差,随随便便就被黑了一片,说好的安全更新在哪啊?

能够顺利自救而不丢失数据,还得得益于 Homezz 完善的备份系统,分分钟找回数据库备份,有木有?恢复数据库之余还顺便搬了个家,话说 PHP 5.2.x 的安全性着实不敢恭维。

WP 主题中添加 AJAX 响应

为 WordPress Theme 添加可在匿名(未登录)情况下访问的 AJAX 响应,网上资料很凌乱,遂自行记录过程如下。

1. 首先确保主题中有 jQuery 库(似乎这已是各小型网站的标配),没有的话可以在主题 header.php 文件中添加:

2. 然后需要在页面中插入当前网站的 URL 信息,这个信息可以通过如下代码:

如此一来系统将自动在页面中返回 admin-ajax.php 的网络路径了:

于是在将来自己写的 JS 代码中,只需要调用 MyAjax.uri 就能获取到 admin-ajax.php 文件的地址了;

3. 在 function.php 中添加准备用来响应 ajax 请求的 function:

4. 然后开始添加 JS 代码,发送 AJAX 请求,这个放在主题的相应 js 文件里面就行了:

code on Gist

部署完毕,更多内容请参见官方文档