Soleman Post Role View
WordPress plugin to restrict frontend post visibility by user role, including Elementor loops.
★ 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.zipReadme
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-preview或context=edit這類參數來關閉過濾 - 只有真正能編輯該篇的使用者,才能在預覽或區塊編輯器看到受限制內容
- 無權限頁面不輸出標題或內文、禁止快取、並加上 noindex
- 可見角色 term 不可自行新增;儲存時只接受網站實際存在的角色與「訪客」
- 設定頁僅限管理員,且不暴露到 REST
無法從應用層完全阻擋的情況:媒體檔若已知完整 /wp-content/uploads/ 路徑,仍可能被直接下載。這需要主機或防火牆另外限制。
需求
- WordPress 6.0 或更新版本
- PHP 7.4 或更新版本
安裝
- 下載此外掛,放到
wp-content/plugins/soleman-post-role-view/ - 在 WordPress 後台啟用 Soleman Post Role View
- 到 設定 → 文章角色可見性,勾選要套用的文章類型,以及哪些角色可被勾選
未在設定頁勾選的文章類型不會出現「可見角色」欄位,前台也不會被過濾。預設會套用「文章」與「頁面」。
使用方法
1. 選擇文章類型與可勾選角色
後台路徑:設定 → 文章角色可見性
- 套用的文章類型:網站中有後台介面的文章類型(含 WooCommerce 商品、其他外掛的 CPT)。勾選後,該類型的編輯頁與列表才會出現「可見角色」。
- 可勾選的使用者角色:只有這裡勾選的角色會出現在文章勾選清單。未設定時預設全部(含訪客)。
若某篇文章已經勾了某個角色,之後在設定裡拿掉該角色,該篇的限制仍會保留,只是編輯畫面不能再勾或取消它(經典編輯器會顯示為已套用但停用)。
2. 在單篇內容勾選可見角色
編輯文章、頁面或已啟用的 CPT 時,側邊會出現 可見角色 勾選清單,操作方式和分類類似。
| 設定 | 前台結果 |
|---|---|
| 都不勾 | 所有人可看,含訪客 |
| 只勾「訂閱者」 | 只有訂閱者可看;訪客與其他角色看不到 |
| 勾「訪客」+「訂閱者」 | 未登入訪客與訂閱者可看 |
| 只勾「訪客」 | 只有未登入可看;一般登入使用者看不到(管理員除外) |
管理員在前台永遠可以看到所有內容,方便預覽。
3. 批次修改
在文章列表中:
- Quick Edit:單篇快速改可見角色
- Bulk Edit:一次選多篇後批次修改
列表也會顯示「可見角色」欄位,方便確認目前設定。
4. 沒有權限時的前台
使用者若直接開啟沒有權限的網址:
- 網址不會改成 404
- 頁面改為顯示「無權限閱覽」
- 留言會一併隱藏
列表、搜尋、Elementor Loop、相關商品等查詢則會直接排除該篇,不會出現在結果裡。
注意事項
- 既有舊文章在尚未勾選任何角色前,行為等同「所有人可看」
- 使用者若有多個角色,只要其中一個被勾選即可觀看
- Elementor 前台 Loop 會套用過濾;管理員仍可看到全部內容
- 此外掛不修改主題或其他外掛的程式;請以獨立外掛方式安裝
授權
GPLv2 or later