[WordPress] 外掛分享: Lock Pages

首頁外掛目錄 › Lock Pages
300+
安裝啟用
★★★★
4/5 分(2 則評價)
2646 天前
最後更新
問題解決
WordPress 3.0+ v0.3.1 上架:2009-11-07

內容簡介

注意:此外掛並未與 Gutenberg 進行測試,且我們近期也沒有這方面的計畫。若您使用 WP > 5.0,若有問題請使用經典編輯器。

注意:此外掛最初是設計用於鎖定頁面,只有後來才新增自訂文章類別的功能。因此有時會使用「頁面」的術語,而其實指的是「任何文章類別」。

有些頁面或文章類別對於網站編輯員而言十分重要,因此不能讓他們隨意移動或刪除。編輯員可能沒有意識到移動頁面網址或刪除一個頁面後會對 SEO 造成什麼樣的影響。此外,某些頁面可能因為網站結構或自訂主題的相關因素而需要保持原地。

這個外掛讓管理員能夠「鎖定」任何或所有頁面,以及任何文章類別。這裡的「鎖定」基本上是指防止非管理員進行以下操作:

編輯文章網址
變更文章父級
變更文章佈景主題
刪除文章
變更文章狀態
變更文章的密碼保護

透過實際阻止資料庫更新以及在可能的情況下移除相應的介面元素,達到了鎖定的效果。在伺服器端透過 WP filters 移除介面元素,如果不行再採用 jQuery 在客戶端執行。

注意:目前我無法讓這個外掛與「快速編輯」功能搭配使用。為了先擋住,我把非編輯被鎖定頁面的使用者從「快速編輯」連結中移除。我知道,這不是很妥當。但在我找到如何有選擇地阻擋快速編輯之前,我假設一個鎖定的頁面就是鎖定的。使用者仍然可以透過正常編輯頁面編輯其他欄位。

請前往 GitHub 取得 開發程式碼和問題追蹤。

已知問題

「快速編輯」功能存在問題。我已經找到可以在「快速編輯」框中建立隱藏欄位、並將數值放入隱藏區塊中的方法,但我無法想到如何動態填充欄位數值,以便在保存時必要時使用舊數據。目前先封鎖不具有編輯鎖定頁面權限的使用者使用「快速編輯」。
雖然我已經修正了 lock_parent 函數,以便將已上傳的檔案附加到已鎖定的頁面上,但仍然無法在插入媒體時附加已在資料庫中的媒體。

想法

在「快速編輯」表單中為管理員增加鎖定核取方塊。
在設定頁面上,使用下拉式選單選擇已鎖定頁面元素所需的權限。
實作一個能夠處理後代的系統,例如選項選擇是否鎖定已鎖定頁面的所有後代。

外掛標籤

開發者團隊

⬇ 下載最新版 (v0.3.1) 或搜尋安裝

① 下載 ZIP → 後台「外掛 › 安裝外掛 › 上傳外掛」
② 後台搜尋「Lock Pages」→ 直接安裝(推薦)
📦 歷史版本下載

原文外掛簡介

NOTE: This plugin is not tested with Gutenberg, and we have no near-term plans to do so. If using WP > 5.0, use the Classic Editor if there are problems.
NOTE: This plugin was originally designed to only lock pages, and only later added custom post type functionality. Hence the name, and sometimes the terminology will say “pages” when it means “any post type”.
Sometimes some pages or other posts are too important to allow them to be casually moved about or deleted by site editors. An editor may think nothing of renaming a page’s slug, or deleting a page to replace it with something similar, perhaps unaware of effects on SEO. Also, certain pages might be essential to keep in place because of a site’s structure, or because of aspects of a custom theme.
This plugin lets administrators “lock” any or all pages, and any post of any post type. “Locking” here basically means preventing non-admins from:

Editing the item’s slug
Changing the item’s parent
Changing the item’s template
Deleting the item
Changing the item’s status
Changing the item’s password protection

Locking is implemented by preventing the actual database update being performed as well as, where possible, having the interface element for that field removed. Where possible interface elements are removed via WP filters on the server; otherwise, jQuery is used on the client.
NOTE: Currently, I’ve been unable to get this working with the Quick Edit functionality. As a stop-gap measure, which is only in place because it seems to be better than nothing, the Quick Edit link is removed for users who can’t edit locked pages. I know, it’s not great. But until I work out how to selectively block Quick Editing, I’m assuming a locked page should be locked. Users can always edit the other fields via the normal edit page.
Go to GitHub for development code and issue tracking.
Known issues

Quick Edit presents problems. I’ve worked out how to create hidden fields in the Quick Edit box, and to put the values in the hidden div, but I can’t work out how to dynamically populate the fields with the values, so the old values can be used if necessary on saving. For now Quick Edit is blocked for users who can’t edit locked pages.
Although I’ve fixed the lock_parent function so it allows uploaded files to be attached to a locked page, it still prevents media already in the library from being attached when inserted.

Ideas

Include the locking checkbox for admins in the Quick Edit form.
On the settings screen, use a drop-down for selecting which capability is needed for editing locked page elements.
Implement a system to deal with descendants, e.g. an option to lock all descendants of a locked page or not.

延伸相關外掛

文章
Filter
Apply Filters
Mastodon