注: このプラグインは Gutenberg でテストされておらず、近い将来にテストする予定もありません。
WordPress バージョン 5.0 以降をご利用の場合は、問題が発生した場合はクラシックエディターをご利用ください。
注: このプラグインは元々ページのみをロックするために設計され、後にカスタム投稿タイプの機能が追加されました。
そのためプラグインの名前が付けられており、用語では「すべての投稿タイプ」を意味するところを「ページ」と表記することがあります。
ページや投稿の中には、サイト編集者が簡単に移動したり削除したりするには重要すぎるものもあります。
編集者は、SEO への影響を意識せずに、ページのスラッグ名を変更したり、ページを削除して似たようなスラッグに置き換えたりすることを平気で行ってしまうかもしれません。
また、サイトの構造やカスタムテーマの特性上、特定のページは保持しておく必要がある場合もあります。
このプラグインを使用すると、管理者は任意のページまたはすべてのページ、および任意の投稿タイプの投稿を「ロック」できます。
ここでの「ロック」とは、基本的に管理者以外のユーザーが以下の操作を行えないことを意味します。
・アイテムのスラッグの編集
・アイテムの親の変更
・アイテムのテンプレートの変更
・アイテムの削除
・アイテムのステータスの変更
・アイテムのパスワード保護の変更
ロックは、データベースの更新そのものを阻止し、可能な場合は該当フィールドのインターフェース要素を削除することで実装されます。
インターフェース要素はサーバー側のWPフィルターによって削除され、そうでない場合はクライアント側でjQueryが使用されます。
注: 現在、クイック編集機能ではこれを動作させることができませんでした。一時的な対策として(何もしないよりはましだと思われるため導入しています)、ロックされたページを編集できないユーザーに対してはクイック編集リンクが削除されています。
これはあまり良い方法ではないことは承知していますが、クイック編集を選択的にブロックする方法が判明するまでは、ロックされたページはロックされるべきだと想定しています。
ユーザーは通常の編集ページから他のフィールドをいつでも編集できます。
開発コードと問題追跡については、GitHub にアクセスしてください。
■ 既知の問題
クイック編集に問題があります。
クイック編集ボックスに非表示フィールドを作成し、その値を非表示のdiv要素に配置する方法はわかりましたが、フィールドに動的に値を設定する方法がわかりません。
そのため、保存時に必要に応じて以前の値を使用できます。
現時点では、ロックされたページを編集できないユーザーに対してはクイック編集がブロックされています。
lock_parent関数を修正し、アップロードしたファイルをロックされたページに添付できるようにしましたが、ライブラリに既に存在するメディアを挿入時に添付することはできません。
■ アイデア
クイック編集フォームに管理者向けのロックチェックボックスを追加します。
設定画面では、ロックされたページ要素の編集に必要な権限を選択するためのドロップダウンを使用します。
子孫を処理するためのシステムを実装します。
例えば、ロックされたページのすべての子孫をロックするかどうかを選択するオプションなどです。