限制对 WordPress 页面的访问和创建会员区
已发表: 2016-02-10希望发布高级课程或一些信息产品? 您可能希望仅将 WordPress 内容限制为那些付费的读者/成员。 并为一般访问者隐藏内容。 使用 WordPress,您可以使用 WordPress 开箱即用或借助插件支持的各种内容限制手段轻松保护此类信息。
我们将在本文中介绍这些不同的方法。 我们将讨论:
- 密码保护页面和私人页面之间的区别(以及两种解决方案的不足之处)
- 在您的 WordPress 网站上创建一个简单的会员区的 2 分钟技巧(不使用插件)
- 让您的知识库文章出现在您的会员区(如果您使用我们的 KnowAll 主题或 Heroic 知识库解决方案,此部分适合您)
- 免费插件可帮助您控制对网站页面、帖子和其他内容的访问
让我们首先了解受密码保护的内容和私人内容之间的区别。
使用 Heroic Knowledge Base 轻松构建私有的可搜索知识库。
获取插件密码保护与私人
限制对特定页面(或其他帖子内容)的访问的最简单方法是使用 WordPress 默认提供的不同“可见性”设置。
无论您添加新页面或帖子,您都可以在右侧面板上找到这些选项:

在可见性设置下,页面(或帖子)的可见性有 3 个选项:
- 公开– 在此默认设置下,所有网站访问者都可以使用内容
- 密码保护——在这里,只有拥有页面(或帖子)密码的读者才能解锁对内容的访问
- Private – 此选项根据特定用户的角色授予访问权限
第二个和第三个可见性选项允许您限制某些内容。
让我们看看如何:
1.密码保护页面/帖子
这是一个非常简单的选项,使您能够通过为该页面(或帖子)分配密码来对单个页面和帖子进行密码保护。
任何知道密码的人都可以访问该内容。
现在,如果您想对公众隐藏一两个页面,则此选项有效。 但是,您可以想象,如果您有 100 篇文章要保护,您将不得不维护和分发 100 篇密码给所有符合条件的读者。
此方法的另一个问题是,如果用户发现此类内容或单击此类受密码保护页面的链接,他们将看到一个要求输入密码的屏幕,因此他们会知道您的网站上有一些受保护或专有的内容. 因此,如果您不希望无权访问的人了解此内容,那么此方法将无法解决您的目的。
以下屏幕截图显示了受密码保护的资源的示例:

此外,如果您无权查看该页面,则密码保护页面不会从网站中删除该页面。 取而代之的是,在标题的开头添加了“受保护: ”一词,这确实有其用途,但如果您不希望人们知道网站上有私人内容,这并不理想。

2) 将页面/帖子标记为私有
私人页面不需要个人密码即可解锁。 在检查用户角色后授予对此类页面的访问权限。 通常,只有站点管理员或编辑可以查看此类私人页面。
标记为私有的页面如下所示:

密码保护页面和私人页面之间的另一个重大区别是,如果您没有足够的权限来查看页面,那么它就不会显示在网站上的任何地方。
如果您不希望普通网站访问者知道网站上有其他内容,这将特别有用。

很明显:
在这两个选项中,如果您想限制网站上的大量内容,则只有“私人可见性”设置才有意义。
但正如您所知,您不可能为您的网站上的每个用户授予管理员或编辑级别的访问权限。 这意味着您需要引入另一个会员级别(订阅者)。 然后将私人页面的可见性级别设置为订阅者的可见性级别。 这样,您的所有订阅者都将能够访问所有受限制的内容。
以下是您如何通过设置会员区来实现这个简单的访问系统:
创建一个简单的会员区
首先,创建一组仅对成员可用的页面。 将所有这些页面设为私有。
为此,您需要在主题中的functions.php文件中添加一个新功能和操作。
因此,转到主题中的functions.php文件并将以下代码添加到其中:
/**
* Add read_private_posts capability to subscriber
* Note this is saves capability to the database on admin_init, so consider doing this once on theme/plugin activation
*/
add_action ('admin_init','add_sub_caps');
function add_sub_caps() {
global $wp_roles;
$role = get_role('subscriber');
$role->add_cap('read_private_posts');
}所有这一切都是更改分配给订阅者角色的能力(权限),以包括阅读私人帖子的能力。 请注意,这是一次性操作,因此最好在主题/插件激活时执行,或者在完成后注释掉代码。 请参阅有关 add_cap 的 Codex 指导说明。 此外,如果要删除该功能,则需要更改代码以使用 remove_cap 函数。

为会员区设置登录
现在您的会员区已经准备就绪,是时候让订阅者轻松登录了。当然,您的用户可以使用 yourwebsite.com/wp-login.php 链接,但您会同意这不是非常人性化。
要设置用户友好的登录框,您可以使用登录页面样式插件。
登录页面样式器可让您为 WordPress 网站设计登录页面。 您可以简单地在主菜单中添加一个名为“登录”的项目,并将其链接到使用登录页面样式设计的自定义登录页面。
还有一些其他插件,但其中大多数至少一年没有更新,所以在使用它们之前一定要检查它们是否兼容。
一旦您通过友好的登录屏幕向订阅者提供您的私人内容,您就应该完成了。
在下一节中,我们将了解如何让您的知识库文章(由 Heroic Knowledge Base 提供支持)显示在您的会员区。
让会员区包含来自英雄知识库的文章
如果您使用我们的 KnowAll 主题或 Heroic Knowledge Base 插件来支持您网站的知识库,那么您可以在会员区让您的订阅者访问您的支持内容!
首先安装高级自定义字段插件。
以前,我们创建了一个名为“产品选项”的自定义字段组。
对于本教程,我将“产品选项”重命名为“知识库类别”接下来要做的是编辑该组以包含页面和帖子。 目前,自定义字段仅设置为在帖子类型为产品时显示。 但我们现在也希望能够将其应用于页面。
为此,请转到管理员中的自定义字段,然后编辑产品选项。

设置完成后,创建您打算仅向付费会员提供的知识库文章。 将所有这些页面设置为私有,以便无法直接访问它们。 将它们分配给一个类别,例如“受限内容类别”。 稍后,您可以选择此类别以显示在您的受限页面上。

最后一步是修改 page.php 文件以显示所选类别。
为此,我们将回到我们创建的函数,以在我之前的帖子中使用知识库文章填充第三个 WooCommerce 选项卡。 你可以在这里重用它。 只需在子主题中回显 page.php 中的函数即可显示任何给定页面的选定文章类别。
您的page.php代码应如下所示:
<?php get_header(); ?>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<?php
//loop start
while ( have_posts() ) : the_post();
//include the page content template.
get_template_part( 'template-parts/content', 'page' );
//check and load the woo_knowledge_base_content
if( function_exists( 'woo_knowledge_base_content' ) ){
echo woo_knowledge_base_content();
} else {
echo 'function woo_knowledge_base_content() missing';
}
//load comment template
if ( comments_open() || get_comments_number() ) {
comments_template();
} //loop end
endwhile;
?>
</main><!-- .site-main -->
<?php get_sidebar( 'content-bottom' ); ?>
</div> <!-- .content-area -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>唯一改变的行是
echo woo_knowledge_base_content();
您的页面现在应该包含所选类别的知识库文章,并且看起来像:

有了这个,您应该已经在您网站的会员区中成功地展示了您的知识库中的文章。
一些限制 WordPress 网站内容的免费插件
如果您不想编码,请考虑安装以下插件之一。 所有这些都可以帮助您保护您的内容免受未注册用户的侵害。
付费会员专业版
使用付费会员专业版,您可以确保只有您的会员才能访问您网站的不同组件,例如页面、帖子、类别、论坛、下载、支持内容等。
s2会员
s2Member 是另一个允许内容限制的轻量级 WordPress 插件。 使用 s2Member,您可以限制对您的帖子、页面、类别、标签、可下载文件、论坛和其他文件的访问,仅限于您的注册用户。
简单的会员资格
Simple Membership 带有一个友好的仪表板,可让您保护您的会员专有内容,如帖子、页面、照片库、附件等,不受一般网站访问者的影响。
除此之外,您还可以查看 WP-Members 和 Membership & Content Restriction – Paid Member Subscriptions。 甚至这些插件也可以帮助您锁定高级内容,允许仅注册用户访问。
把它包起来……
根据您的目标,您可能需要介于基本内容限制功能和高级内容限制功能之间的任何功能。 但是现在您知道如何自己实现一个简单的会员区了。 您甚至知道可供选择的最佳插件。
因此,请尝试代码或插件,并在下面分享您的经验。
