限制對 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。 甚至這些插件也可以幫助您鎖定高級內容,允許僅註冊用戶訪問。
把它包起來……
根據您的目標,您可能需要介於基本內容限制功能和高級內容限制功能之間的任何功能。 但是現在您知道如何自己實現一個簡單的會員區了。 您甚至知道可供選擇的最佳插件。
因此,請嘗試代碼或插件,並在下面分享您的經驗。
