如何讓訂閱者查看您的私人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。