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.

by Soleman · github.com/tim90403/soleman-post-role-view

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/tim90403/soleman-post-role-view/archive/refs/heads/main.zip

Readme

Soleman Post Role View

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-previewcontext=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

Read the full README on GitHub →