前提・実現したいこと
WordPress 5.4.2でGutenbergを利用する管理画面をカスタマイズしています。
顧客の要望で、投稿者に以下の権限だけを持たせたいです。
・公開状態の記事の本文の編集(即公開可)
・記事本文に用いるメディアのアップロード
上記以外の全ての機能を制限したいです。例えば
・記事の公開状態変更(非公開化やゴミ箱入れ、パスワード設定、下書きへ切り替え、公開日の変更など)
・記事が属するカテゴリー変更
・記事のスラッグ変更
などを制御したいです。
管理画面の他の機能については自前で制御できましたが、
編集画面内で上記機能をどのように表示オフ&権限制御して良いかわかりません。
権限制御ができなくても、最低でも表示オフにしたいです。
発生している問題・エラーメッセージ
下記のコードで制限したい機能は消せますが、本文記入欄も消えてしまいます。
PHP
1remove_post_type_support( 'post', 'editor' );
本文記入欄だけは残したいです。
該当のソースコード
現在以下のコードで「投稿の属性」以外は消せます。
できれば「投稿の属性」も消したいですが、これは無理でも良いです。
PHP
1function remove_post_supports() { 2 if (! current_user_can( 'administrator' ) ) { 3 remove_post_type_support( 'post', 'title' ); // タイトル 4 // remove_post_type_support( 'post', 'editor' ); // 本文欄(ここを消すと本文も消えてしまう) 5 remove_post_type_support( 'post', 'author' ); // 作成者 6 remove_post_type_support( 'post', 'thumbnail' ); // アイキャッチ 7 remove_post_type_support( 'post', 'excerpt' ); // 抜粋 8 remove_post_type_support( 'post', 'trackbacks' ); // トラックバック 9 remove_post_type_support( 'post', 'custom-fields' ); // カスタムフィールド 10 remove_post_type_support( 'post', 'comments' ); // コメント 11 remove_post_type_support( 'post', 'revisions' ); // リビジョン 12 remove_post_type_support( 'post', 'page-attributes' ); // ページ属性 13 remove_post_type_support( 'post', 'post-formats' ); // 投稿フォーマット 14 remove_post_type_support( 'post', 'templates' ); // 投稿フォーマット 15 16 unregister_taxonomy_for_object_type( 'category', 'post' ); // カテゴリ 17 unregister_taxonomy_for_object_type( 'post_tag', 'post' ); // タグ 18 } 19} 20add_action( 'init', 'remove_post_supports' ); 21 22function remove_post_meta_boxes() { 23 if ( !current_user_can( 'administrator' ) ) { 24 remove_meta_box( 'slugdiv', 'post', 'normal' ); // スラッグ 25 remove_meta_box( 'submitdiv', 'post', 'side' ); // 公開 26 } 27} 28add_action( 'admin_menu', 'remove_post_meta_boxes' );
試したこと
プラグインでできるならその方がわかりやすいので探してみましたが、
UserRoleEditor は大まかな権限制御しかしてくれず、編集画面内のプロパティ設定欄のカスタマイズはできませんでした。
MemberPress も同様でした。
あなたの回答
tips
プレビュー