例えば、「寄稿者」や「投稿者」などのユーザー権限が存在して、権限によって、投稿の編集画面の各項目を非表示にしたい場合があります。
そんな場合のカスタマイズいろいろ。
※基本的に、ユーザー権限で表示・非表示を制御する必要はないと思っています。
例えばクライアント様のサイトでも。
せっかく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()」は反映されませんでした。
クラシックエディタから切り替えの際には、注意が必要です。