Posted on 05-02-2015
Filed Under (技术) by waterlin

前两天介绍了 WordPress 实现需要用户登陆后才能查看文章的功能,如果需要真正的注意到隐私保护,还需要补充两点功能。

1. 需要关掉 RSS 全文输出功能

根据之前的方法,用户在没有权限的情况下无法查看你的 WordPress 博客,但是如果用户不小心获取了你的 RSS 订阅地址,依然可以通过 RSS 阅读器抓到你的更新。

所以,如果你对你的文章的隐私特别关心的话,需要在后台把 RSS 输出功能关掉。

2. 使用 Email 来通知用户有文章更新

如果你把 RSS 功能关掉了,那用户如何知道你有更新站点内容呢?现在这个社会大家都这么忙,不可能让大家天天来检查一遍吧?

这时,最好再添加一个功能: Email 通知文章更新!这样订阅者依然可以及时地获取你的更新,不会漏掉任何一篇文章。

你可以安装 subscribe2 这个插件,这样你每次有文章更新,你的订阅者就可以收到一个提醒邮件。

对于一些 WordPress 的管理员来说,使用的是虚拟主机来搭建的博客服务,这个时候,用 subscribe2 来发送邮件可能会提示说如下错误:

即你在 WordPress 里的管理员邮箱可能无法发送邮件。如果你的空间服务器的邮箱不支持发送 Email,则你可以设置 WordPress 使用外部的 SMTP 服务来发送邮件。要实现这个功能,最简单的办法就是使用 WP Mail SMTP 这个 WordPress 插件。安装了这个插件后,你就可以使用 Gmail 或是 QQMail 之类的 SMTP 服务来发送订阅邮件了。

另外,如果不喜欢使用 subscribe2 这个插件,也可以使用 Jetpack 这个插件,里面同样有发送订阅邮件的功能。

(0) Comments    Read More   
Posted on 04-02-2015
Filed Under (技术) by waterlin

我一直都是使用自己搭建的 WordPress 站点来写博客,根据不同的需求用子域名的方式建立了几个子站点。不过前段时间有一个子站点无法加载模板,不管是新的模板、旧的模板、刚生效的模板,选择任何一个模板后主页永远是模板加载失败的无格式样式,在该子站点的控制面板里同样也无法看到该模板的预览画面,如下图所示:

WordPress no theme loaded

这个问题的原因我找了很久,甚至把官方网站的文档都找了一遍,突然今天才恍然大悟。要解释这个原因,估计得从头说起了。

  1. 我在 Bluehost 上买了一个域名和空间,假设这个域名名叫 http://test.com 及其子域名来访问服务器的资源。
  2. 然后我用 WordPress 搭建了一个多博客系统,并且用不同的子域名来指向不同的博客,比如说 http://a.test.comhttp://b.test.com 分别指向不同的博客子站点,针对不同的主题。这个设置很简单,只需要在 WordPress 总管理员那里设置即可。
  3. 在子站点的控制面板 http://a.test.com/wp-admin 里,绑定一个正式的域名 http://testA.comhttp://a.test.com,这样用户就通过 http://testA.com 来访问我的子站点,对于用户来说,这个子站点看起来像是一个完整独立的网站。
  4. 平时都是使用 http://testA.com 这个域名来进行博客服务访问的,基本上忘记了 http://a.test.com 这个子域名的存在。某一天,我突然心血来潮,想在 test.com 的子域名下建立一个新的站点脚本来测试一下,结果就选择了把 a.test.com 这个子域名指向了 bluehost 服务器上的新目录,并且在这里安装了新的服务来进行测试。
  5. 于是,出现了在 http://a.test.com 子站点里的控制面板里,无法正确加载模板的问题了。 看来,不管 WordPress 是否绑定了新域名,WordPress 最终还是用最原始的域名来进行资源定位的

要解决这个问题很简单,只需要把 a.test.com 重新指向正确的服务器路径即可。原因很简单,只是被坑了好久!

(0) Comments    Read More   
Posted on 04-02-2015
Filed Under (技术) by waterlin

WordPress 是一个针对公众阅读的博客系统,所以原生系统对阅读权限的设置并不出色,比如说系统就不提供限制为只允许登陆用户查看文章(或是查看指定目录、标签文章)的功能。WordPress 更像一个私人出版系统,所以这些功能不完善也可以理解。

对于我自己来说,我有一个自己的小博客系统,用来记录一下生活中的事情,这些内容并非不可公开,只是没有太多必要公开,因为我只是想写给自己看一下,并且其他人看这样的生活琐事并没有什么太大的价值。我想把这个做成自己的 QQ 空间,想让我允许的人来观看,仅此而已,不希望这个自留地太过于吵杂。

或者有人会问,那你为什么不用 QQ 空间?很简单,我不喜欢,太杂乱了,乱七八糟的广告、无聊的功能太多了。

要把 WordPress 加上一个授权用户才可以访问的权限也很简单,虽然有几个插件能实现这样的功能,但是反响并不好。最好的办法就是自己来 DIY 模板,这篇文章就对这个问题进行了详细的讨论,我这里加上一点自己的使用体会。

1. 先在模板的 functions.php 文件里定制一个用户权限检查的函数

最简单的,对于登陆用户的权限检查可以使用下面的例子代码:

如果你需要更严格一点,比如说需要确定本用户是属于这个博客的(现在的 WordPress 支持多博客),可以使用类似下面的代码,重点是使用了 is_user_member_of_blog 这个函数:

如果你需要更复杂的权限控制,比如说用户需要是这个博客的订阅者、作者或是管理员等级别的身份,可以使用 WordPress 的 user_can 函数来进行更复杂的用户身份查询。

2. 在特定的地方使用这个权限检查函数来约束用户

这里举一个最简单的使用例子,比如说在 header.php 使用上面这一个函数:

上述代码很简单,但是很容易对其进行扩充,可以在其它你需要限制用户权限进行阅读的地方添加上述代码,比如说针对某个目录或是某个标签的浏览等。

3. 小结

这样如果用户需要查看你的 WordPress 博客,则一定需要登陆并拥有特定的权限了。通过这种方式修改过的模板要注意,如果升级了模板,则需要手动把这些修改合并到最新的模板代码里。

(0) Comments    Read More