WordPress 头像溢出边界及解决方案

众所周知,Gravatar 在国内被墙无法访问,而采用 Gravatar 作为头像系统的 WordPress 自然也受到了波及。因此目前来讲,如果想在国内正常显示头像,除了使用第三方评论插件以外,还可以使用翼帆远航之前分享的头像URL替换法,目前翼帆远航使用的就是这个方法。鉴于 Gravatar 官方的 SSL 头像调用URL依然可用,因此可以通过 WordPress 过滤器在最终生成头像URL之前,将被墙的 http://2.gravatar.com 替换为可访问的 https://secure.gravatar.com,这样一来头像就可以正常显示了。

但新版的 WordPress 为了更好的支持响应式图片,在所有的头像 <img> 标签中增加了 srcset 属性,用于获取 2 倍尺寸大小的头像,以便在 iPhone、Macbook Pro 等视网膜屏上显示更高清的头像,这样一来,头像 <img> 标签中就包含了 2 段分别用于获取 1x 和 2x 头像的URL,使得原先头像URL替换法所使用的正则表达式失效,造成匹配错误。最终体现在视觉上就是:博客内所有头像都溢出了边界,而且尺寸大小是正常尺寸的 2 倍,很影响博客界面的美观性。

为了解决该问题,翼帆远航重写了正则表达式和替换规则,现经测试,头像可以正常显示了。具体的操作步骤是:参阅之前的文章《Gravatar 头像被墙及解决方法》,用新的代码替换旧的代码。

 

WordPress 技巧:在侧边栏添加“博客统计”的小工具 V2.0

在个人独立博客中增加一个显示“站点统计”的版块不仅有利于增强博主的自信心和成就感,也有利于加深访客对博客的了解和信任。

效果截图

efanyh_blogstats

使用教程

1、安装插件 Enhanced Text Widget ,它能让你在侧边栏小工具中直接使用 PHP代码。

2、添加一个名为“Enhanced Text”的小工具,标题为“博客统计”,内容为以下代码:

3、保存即可在前台看到效果,样式运用在不同主题上可能需要微调以达到最佳的显示效果。

数据调用

1、日志总数:

2、草稿数目:

3、评论总数:

4、成立时间:

5、标签总数:

6、页面总数:

7、分类总数:

8、链接总数:

9、用户总数:

10、最后更新:

WordPress 技巧:在侧边栏添加“最新评论”的小工具 V2.0

在个人独立博客中,除“最新文章列表”以外,最能体现博客活跃度的版块非“最新评论”莫属。如果我们将“最新评论”设置在侧边栏顶部显示,那么访客一进入首页就能够了解到博客的最新动态,融入到讨论的氛围中并结识更多同为站长的朋友。

效果截图

efanyh_recentcomments

添加步骤

1、安装插件 Enhanced Text Widget ,它能让你在侧边栏小工具中直接使用 PHP代码。

2、添加一个名为“Enhanced Text”的小工具,标题为“最新评论”,内容为以下代码:

3、保存即可在前台看到效果,样式运用在不同主题上可能需要微调以达到最佳的显示效果。

 

简易教程:使用 Memcached 为 WordPress 站点提速

翼帆远航在阿里云服务器的硬件配置是 单核 CPU + 1G 内存,软件配置是 Ubuntu + Nginx + PHP + MySQL,在之前添加 SWAP 分区解决完内存不够用的问题以后,现在可以进一步为翼帆远航提速。由于阿里云服务器的磁盘 IO 性能太差,而关系型数据库 RDS 又太贵,所以翼帆远航采用了折中的办法 —— 用 Memcached 为站点进行加速。

到底什么是 Memcached 呢?在没用 Memcached 之前,一个访客访问翼帆远航,WordPress 就要向数据库发送查询指令,获取文章、评论等数据,而指令的数量又随着  WordPress 插件的增多而增加,再加上磁盘 IO 本来就不行,这样网站的速度就慢如蜗牛了。使用 Memcached 能让这些文章、评论数据事先缓存在内存中,而需要访问时直接从内存中取就可以了,大幅提高了网站的速度。

接下来我就将我的实践经验写在下面,不同的软件环境配置方法有所不同,大家可以参考,也欢迎交流!

一、配置 Memcache

1、安装 Memcached 服务端。
Memcached 服务端是与 Nginx、PHP、MySQL 平级的服务器应用软件,负责内存对象缓存的具体操作。

安装方法:在 Shell 中执行以下命令

2、安装 Memcache For PHP 模块。
该模块的作用相当于 PHP 与 Memcached 服务端的连接线。

安装方法:在 Shell 中执行以下命令

接着,修改 php.ini(/alidata/server/php/etc/php.ini)

找到 extension_dir = “./” 修改为 make install 之后得到的目录 extension = “/alidata/server/php/lib/php/extensions/no-debug-non-zts-20100525/”
然后添加 extension = memcache.so

此时在 info.php 中可以看到 memcache 的相关信息,代表安装成功,如不行可尝试重启 nginx。

二、在 WordPress 中启用 Memcached

1、安装插件:Memcached Object Cache。
在 WordPress 后台搜索插件:memcached,安装名为“Memcached Object Cache”的插件,但不启用,复制其安装目录下的 object-cache.php 到 /wp-content/ 即可。

2、进阶。安装插件:Batcache。
复制其安装目录下的 advanced-cache.php 到 /wp-content/ ,并在 wp-config.php 中添加 define(‘WP_CACHE’, true); 激活 Batcache,此时多次刷新页面查看源代码(未登录状态),在 </head> 之前可以看到 Batcache 的输出信息。可选将 batcache.php 复制到 /wp-content/plugins/ 。

3、进阶。安装插件:WP Memcached Manager 
查看 Memcached 缓存的效果及命中率等数据。

解决 WordPress 无法连接到数据库的问题

最近,翼帆远航搬家到阿里云,遇到的问题接连不断,先是内存不足导致 MySQL 频繁挂掉,解决后过几天又出现 wp_options 数据表损坏导致网站无法访问的问题,由于阿里云服务器相当于 VPS,所以出了问题一般都要自己解决,不像之前用虚拟主机,出了问题只要向客服知会一声就行,不过这样也好,通过“出现问题——剖析问题——解决问题”也让自己对网站的运行有了更深层次的了解,学到了更多有用的知识。

今天我将最近学到的知识和解决问题的经验分享出来,一方面方便自己日后查阅,另一方面为有需要的翼友提供帮助。

wordpress    database

问题产生的原因

网站无法访问,WordPress 提示无法连接到数据库,主要有以下几个原因:

1、数据库的配置不正确。

数据库的密码或 WordPress 的配置文件 wp-config.php 被改。可能是你自己之前做什么项目改了,或是被主机商或黑客改了,这种情况发生的概率不大,不过最好先瞧一眼。

2、数据库服务器没有启动或出错。

翼帆远航之前网站不能访问就是这个原因,内存不足导致 MySQL 服务频繁被杀掉,解决方案可以参照之前写的文章《阿里云服务器上 MySQL 频繁挂掉的解决方法》,也有可能是数据库服务器出错,具体可以问一下主机商。

3、数据表 wp_options 出现问题。

这个问题比较常见,wp_options 储存了 WordPress 博客的大部分配置信息,因此 wp_options 表出现问题也会导致网站无法访问。如果 wp_posts 表出现问题,那么你就看不到文章了。出现该问题解决方法也很简单:

  1. 到 phpMyAdmin 修复出问题的数据表。
  2. 向 wp-config.php 添加一句代码:define(‘WP_ALLOW_REPAIR’, true);  然后访问 http://网站地址/wp-admin/ 根据提示进行自动修复,然后就 OK 了。

结语

以上是 WordPress 无法连接数据库 常见的问题产生原因及常规的解决方法,如果你上面 3 种方法都试了,但还无法解决,或者有什么需要交流的,欢迎留言。

WordPress 技巧:不依赖 Google API 为每个页面生成二维码

二维码是电脑与移动设备间的桥梁,用移动设备扫描电脑屏幕上的二维码,即可在移动设备上浏览电脑端未读完的网页。本文介绍的方法是:利用德国公司提供的 QRCode API 和本地缓存的机制为 WordPress 每个页面生成二维码。

如果你更希望使用 Google API,可以参考这篇文章《巧用“Google API + 本地缓存”的机制为每个页面生成二维码

效果预览

qrcode_cache_02

qrcode_cache_03

可以看出,二维码是从本地缓存中加载的。

操作步骤

1、安装插件 Code Snippets,它能让你在 WordPress 后台直接管理代码段,而不必频繁的修改 functions.php。

2、新建一个代码片段,将以下代码贴入其中。下列代码的作用是定义获取二维码及本地缓存的方法。

3、在网站的根目录下创建名为 qrcode 的文件夹,确保有写入权限,本地缓存的二维码图片将存于该文件夹中。

4、安装插件 Enhanced Text Widget,它能让你在侧边栏小工具中直接使用 PHP代码。

5、添加一个名为“Enhanced Text”的小工具,标题为“本页二维码”,内容为以下代码:

6、保存后,在前台侧边栏就可以看到当前页的二维码了。

详细解说

以上代码中,get_qr 方法用于拉取二维码并缓存于本地,而 show_qrcode 方法则用于显示二维码,你可以在全站任意支持 PHP 代码的位置调用 show_qrcode() 来显示当前页的二维码。

以上代码的第 31 行,$imgsize 表示获取二维码的大小,可根据需要修改。

QR Code API Reference:http://goqr.me/api/

WordPress 技巧:Gravatar 头像被墙及解决方法

今年 6 月 Google 服务器彻底被墙,而 WordPress 默认又需要从 Google 服务器加载字体,因而网站整体速度变慢,站长们怨声载道,好不容易处理完这个问题以后,现在又发现 Gravatar 头像被墙了,由于 Gravatar 是世界通用的头像存储系统,所以不仅仅是 WordPress,国外很多优秀的建站系统同样调用 Gravatar 头像,然而现在 Gravatar 被墙,国内站长又得忙活开了。

user

目前最佳的解决方案是调用 Gravatar 官方的 SSL 头像链接,因为 HTTPS 没被墙,而且访问速度不错,这应该是最稳妥的方案了。

操作方法:将以下代码放到 functions.php 的合适位置即可。

如果你用了 Code Snippets 插件,那么建议你新建一个代码段,然后将以上代码复制进去就行了,以后无论是要修改代码,还是添加删除,都不用修改主题文件了,很方便。

链接:查看 Code Snippets 的介绍

code-snippets-gravatar

 

本地缓存

国内主机不推荐!墙内的主机根本无法访问 Gravatar,更不用说缓存了,国内主机用本地缓存的方法反而会使网站速度更慢!

如果你用国外主机或香港主机,可以将以下代码复制到 functions.php 中。

然后在 WordPress 根目录下创建名为 avatar 的文件夹,并给与写入权限,然后放入一张默认头像名为 default.jpg

目录结构为:
/wp-admin/
/wp-content/
/wp-includes/
/avatar/default.jpg

翼帆远航正在使用第一种方案,如果你有更好的解决方法,也欢迎提出来!

相关链接:禁用 Open Sans 字体 (Google Fonts) 为 WordPress 提速

 

注:代码引用自 WordPress 大学,并在此基础上有所改动,原文链接:http://www.wpdaxue.com/gravatar-is-blocked.html

WordPress 插件:Code Snippets – 管理代码片段

对于经常折腾 WordPress 的朋友来说,functions.php 肯定再熟悉不过了,我们可以将自己写好的函数添加到这个文件,从而实现相应的功能。但 functions.php 是极其敏感的,多一个空行或文件编码不对都会导致异常情况,而且换主题时还要对代码进行搬家。

翼帆远航今天就推荐一款十分便于管理代码片段的插件:Code Snippets,帮你从 functions.php 的泥潭中解脱出来。只要能添加到 functions.php 的代码,都可以添加到 Code Snippets,且更换主题以后,Code Snippets 中的代码片段依然可用,无需重新添加。

对于 WordPress 新手来说,可以把从 WordPress 老手那里拿到的代码添加到 Code Snippets,从而快速实现功能,避免修改 functions.php 繁琐的步骤。

Code Snippets 的优势:

  1. 可单独启用或禁用指定的代码片段。
  2. 编辑代码时支持语法高亮。
  3. 支持导出代码片段。

code-snippets-01

code-snippets-02

在后台插件安装界面搜索 Code Snippets 即可在线安装,或者在此下载