如何让订阅者查看您的私人WordPress博客

默认情况下,只有管理员和编辑可以查看私人帖子

默认情况下,只有管理员和编辑可以查看私人帖子

你有没有想过只为你的家人和朋友或公司团队的成员建立一个私人WordPress博客? WordPress为您的WordPress博客提供了一些默认选项,但有一个问题。 当您将帖子标记为“私人”时,只能由管理员和编辑人员看到。

也许,你不希望你的朋友编辑你的帖子,只是为了阅读它们。 WordPress调用这些普通的只读用户订阅者。 通过本文中的提示,您仍然可以保持匿名公开,但可以将您的私人帖子提供给您的订阅者朋友阅读。

版本 :WordPress 3.x

在我们开始之前

标准免责声明 :我既不是PHP也不是WordPress插件安全专家。 使用建议的代码和插件需要您自担风险。 他们不会为我提出任何红旗,但除非您的博客基本上是为了好玩,否则您应该将这些想法通过您的IT团队(如果有的话)。 至少首先测试副本上的更改。

如果您要存储国家机密或纳米机动车的计划,您可能需要投资更安全的解决方案。 像纸一样。

抽查 :按照这些说明,您需要能够添加自定义主题。

例如,如果您正在运行免费的WordPress.com博客,则无法执行此操作(无需升级)。 然而,WordPress.com博客显然有一个额外的隐私选项,以便与朋友和家人共享帖子,所以你可以检查。

首先,制作一个儿童主题

第一步是制作一个自定义的儿童主题,如果你还没有。 你可以在五分钟内做到这一点。 使用您当前的主题作为父主题。 孩子主题只需要一些代码片段来定制你的网站。

诚然,更清晰的选择可能是制作一个单独的小插件 。 然后,您可以在多个网站上重复使用该代码。

但是,编写一个插件似乎对这么一小部分代码来说是过度的。 另外,如果你还没有设置一个儿童主题,你应该。 有了儿童主题,你可以在CSS中进行调整,并开始修复所有令你恼火的小主题问题。

然后,创建functions.php

在您的子主题中,创建一个名为functions.php的文件。 这个文件很特别。 主题中的大多数文件都会覆盖父主题中的相同文件。 如果您制作sidebar.php,它将替换父主题的侧边栏。 但函数.php不会覆盖,它增加了 。 您可以在这里放入一些代码片段,并且仍然保留父主题的所有功能。

为订户提供额外的功能

我们的目标是允许普通用户查看我们的私人帖子。 正如史蒂夫泰勒在这篇博客文章中解释的,我们可以在functions.php中用几行简单的代码来做到这一点:

<?php //允许订阅者查看私人帖子和页面$ subRole = get_role('subscriber'); $ subRole-> add_cap('read_private_posts'); $ subRole-> add_cap('read_private_pages');

使用add_cap()函数,您只需向Subscriber角色添加额外的功能即可。 现在订阅者可以阅读私人帖子和页面。

看看这是多么容易? 它只需要几行代码。

请注意,虽然泰勒只提到了read_private_posts,我还建议添加read_private_pages。 你也可能想要一些私人页面。

平滑登录

虽然我们在functions.php这里,泰勒还有一个额外的建议。 通常,当您登录到WordPress时,您将被带到具有各种管理员任务的仪表板。 但是你的订阅者只能登录阅读 。 被带到仪表板令人讨厌,最糟糕的是混乱。 (你几乎可以听到你的阿姨呻吟,“博客去哪了?”)

使用此代码段,您的订阅者将被重定向到主页。 在上面的代码后面插入在functions.php中:

//重定向到登录函数loginRedirect的主页($ redirect_to,$ request_redirect_to,$ user){if(is_a($ user,'WP_User')&& $ user-> has_cap('edit_posts')=== false){return get_bloginfo('siteurl'); } return $ redirect_to; } add_filter('login_redirect','loginRedirect',10,3);

请注意,此代码不会为Subscriber角色进行精确测试。 相反,它测试用户是否可以edit_posts。 不过,我认为这实际上是一个更好的测试 - 任何不能编辑帖子的人都对仪表板没有真正的兴趣。

默认尝试“私人帖子”&#34;

如果您的大部分或全部帖子都是私密的,请考虑默认私人帖子插件。 这个小插件做一件事,只有一件事。 当您创建新帖子时,它会自动设置为“私人”。

如果您愿意,您仍然可以将帖子设置为公开。 但是使用这个插件,您永远不会忘记将帖子设置为Private。