WP Manifestindependent plugin directory
manifest / users / soleman-post-role-view

Soleman Post Role View

WordPress plugin to restrict frontend post visibility by user role, including Elementor loops.

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/tim90403/soleman-post-role-view/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

WordPress 外掛:依使用者角色控制文章、頁面與自訂文章類型在前台的可見性。

未勾選任何角色時,內容對所有人公開(含未登入訪客)。勾選之後,只有被勾選的角色看得到該篇內容;未勾選的角色在任何前台查詢中都不會看到,包含 Elementor Loop。

功能

  • 可套用到網站現有的 post type,包含其他外掛建立的自訂文章類型
  • 可在設定頁指定哪些使用者角色(含訪客)能出現在勾選清單
  • 編輯畫面提供類似「分類」的複選清單
  • 前台依角色過濾內容,涵蓋一般 WP_Query、搜尋、REST API、Elementor Loop、WooCommerce 商品查詢與 Jet Woo Builder
  • 文章列表支援 Quick Edit 與 Bulk Edit
  • 直接開啟沒有權限的網址時,仍停留在該頁,並顯示「無權限閱覽」
  • 管理員(administrator)在前台不受限制;後台編輯與列表不會過濾

安全防護

此外掛會阻擋常見的內容繞過與資訊洩漏,包含:

  • REST API 單篇/列表、留言、WooCommerce REST、oEmbed、XML-RPC、sitemap
  • 不信任 ?elementor-preview 或 context=edit 這類參數來關閉過濾
  • 只有真正能編輯該篇的使用者,才能在預覽或區塊編輯器看到受限制內容
  • 無權限頁面不輸出標題或內文、禁止快取、並加上 noindex
  • 可見角色 term 不可自行新增;儲存時只接受網站實際存在的角色與「訪客」
  • 設定頁僅限管理員,且不暴露到 REST

無法從應用層完全阻擋的情況:媒體檔若已知完整 /wp-content/uploads/ 路徑,仍可能被直接下載。這需要主機或防火牆另外限制。

需求

  • WordPress 6.0 或更新版本
  • PHP 7.4 或更新版本

安裝

  1. 下載此外掛,放到 wp-content/plugins/soleman-post-role-view/
  2. 在 WordPress 後台啟用 Soleman Post Role View
  3. 到 設定 → 文章角色可見性,勾選要套用的文章類型,以及哪些角色可被勾選

未在設定頁勾選的文章類型不會出現「可見角色」欄位,前台也不會被過濾。預設會套用「文章」與「頁面」。

使用方法

1. 選擇文章類型與可勾選角色

後台路徑:設定 → 文章角色可見性

  • 套用的文章類型:網站中有後台介面的文章類型(含 WooCommerce 商品、其他外掛的 CPT)。勾選後,該類型的編輯頁與列表才會出現「可見角色」。
  • 可勾選的使用者角色:只有這裡勾選的角色會出現在文章勾選清單。未設定時預設全部(含訪客)。

若某篇文章已經勾了某個角色,之後在設定裡拿掉該角色,該篇的限制仍會保留,只是編輯畫面不能再勾或取消它(經典編輯器會顯示為已套用但停用)。

2. 在單篇內容勾選可見角色

編輯文章、頁面或已啟用的 CPT 時,側邊會出現 可見角色 勾選清單,操作方式和分類類似。

設定 前台結果
都不勾 所有人可看,含訪客
只勾「訂閱者」 只有訂閱者可看;訪客與其他角色看不到
勾「訪客」+「訂閱者」 未登入訪客與訂閱者可看
只勾「訪客」 只有未登入可看;一般登入使用者看不到(管理員除外)

管理員在前台永遠可以看到所有內容,方便預覽。

3. 批次修改

在文章列表中:

  • Quick Edit:單篇快速改可見角色
  • Bulk Edit:一次選多篇後批次修改

列表也會顯示「可見角色」欄位,方便確認目前設定。

4. 沒有權限時的前台

使用者若直接開啟沒有權限的網址:

  • 網址不會改成 404
  • 頁面改為顯示「無權限閱覽」
  • 留言會一併隱藏

列表、搜尋、Elementor Loop、相關商品等查詢則會直接排除該篇,不會出現在結果裡。

注意事項

  • 既有舊文章在尚未勾選任何角色前,行為等同「所有人可看」
  • 使用者若有多個角色,只要其中一個被勾選即可觀看
  • Elementor 前台 Loop 會套用過濾;管理員仍可看到全部內容
  • 此外掛不修改主題或其他外掛的程式;請以獨立外掛方式安裝

授權

GPLv2 or later