WordPress ブロックエディタ( Gutenberg )の投稿の編集画面をカスタマイズ


例えば、「寄稿者」や「投稿者」などのユーザー権限が存在して、権限によって、投稿の編集画面の各項目を非表示にしたい場合があります。
そんな場合のカスタマイズいろいろ。

※基本的に、ユーザー権限で表示・非表示を制御する必要はないと思っています。
例えばクライアント様のサイトでも。
せっかくWordPress を導入したのなら、使える機能は思いっきり使えばいい!
思う存分使っていただいても崩れないようなテーマ作成をすればよいだけのこと。
管理者権限で運用していただくのが、クライアント様にとっても開発者にとっても、いちばん幸せ。

でもどうしても、投稿や寄を含む会員サイトなどでは、管理者以外の入力を控えたい項目も出てきます。
そんな時のカスタマイズ。

ブロックエディタ( Gutenberg )を利用している場合

下記のように、「remove_post_type_support」を使います。
ただし、カテゴリーとタグは、「unregister_taxonomy_for_object_type」を使います。
固定ページの場合は、各「post」の部分を「page」に変更。
カスタム投稿の場合は、 各「post」のままでOK。

function my_remove_post_support() {
  if ( !current_user_can( 'administrator' ) ) {	//管理者以外だったら
	remove_post_type_support('post','thumbnail');// アイキャッチ画像
	remove_post_type_support('post','excerpt');	// 抜粋
	remove_post_type_support('post','trackbacks');// トラックバック
	remove_post_type_support('post','custom-fields');// カスタムフィールド
	remove_post_type_support('post','author');// 作成者
	remove_post_type_support('post','comments');// コメント
	remove_post_type_support('post','revisions');// リビジョン
	remove_post_type_support('post','page-attributes'); // 表示順
	remove_post_type_support('post','post-formats');// 投稿フォーマッ
	unregister_taxonomy_for_object_type( 'category', 'post' ); // カテゴリー
	unregister_taxonomy_for_object_type( 'post_tag', 'post' ); // タグ
  }
}
add_action('init','my_remove_post_support');

クラシックエディタ(Classic Editor)を利用している場合

同じく、 固定ページの場合は、各「post」の部分を「page」に変更。
カスタム投稿の場合は、 各「post」の部分を「カスタム分類名」に変更。

function my_remove_meta_boxes_post() {
  if ( !current_user_can( 'administrator' ) ) { //管理者以外だったら
	remove_meta_box('slugdiv','post','normal'); // スラッグ
	remove_meta_box('postexcerpt','post','normal'); // 抜粋
	remove_meta_box( 'trackbacksdiv' , 'post','normal' ); // トラックバック
	remove_meta_box( 'postcustom','post','normal' ); // カスタムフィールド
	remove_meta_box( 'authordiv','post','normal' ); // 作成者
	remove_meta_box( 'commentsdiv','post' , 'normal' ); // コメント
	remove_meta_box( 'trackbacksdiv' , 'post' , 'normal' ); // トラックバック
	remove_meta_box( 'commentstatusdiv', 'post' , 'normal' ); // ディスカッション
	remove_meta_box( 'revisionsdiv','post','normal' ); // リビジョン
	remove_meta_box( 'categorydiv','post','side'); // カテゴリー
	remove_meta_box( 'tagsdiv-post_tag' , 'post' , 'side' ); // タグ
  }
}
add_action( 'admin_menu' , 'my_remove_meta_boxes_post' );

ブロックエディタ(Gutenberg)では、「remove_meta_box()」ではなく、「remove_post_type_support()」を使おう

WordPress ではそろそろブロックエディタ が標準になりつつありますね。
ブロックエディタ(Gutenberg)では、「remove_meta_box()」は反映されませんでした。
クラシックエディタから切り替えの際には、注意が必要です。


関連記事

©Oz-style