プラカンブログSTAFF BLOG

2017.05.18

WordPress 投稿画面をユーザーごとにカスタマイズする方法

こんにちは。デザイナーのSUZUKIです。

3回連続WordPressネタをお送りします。
以前紹介したWordPressの「ユーザーの種類と権限」とユーザーごとに振り分ける方法をもとに
今回はユーザーの権限ごとに投稿画面をカスタマイズする方法を2つ紹介します。

  1. 「remove_meta_box」を利用した投稿画面の不要なパーツを削除する方法
  2. 「remove_post_type_support」を利用した投稿画面の不要なパーツを削除する方法

管理者以外のユーザーには必要のないパーツを削除し、
ユーザーが使いやすい画面構成にし、間違えて投稿することを防ぎます。

「remove_meta_box」を利用した投稿画面の不要なパーツを削除する方法

remove_meta_box( 'postcustom','post','normal' ); // カスタムフィールド

「postcustom」部分は、パーツIDを指定します。

「post」部分は、投稿タイプの指定です。
よく使う指定は、「post」の投稿ページ、「page」の固定ページになると思います。

「normal」部分は、メタボックスの種類の指定です。
指定は「normal」(投稿画面のメイン部分)か、「side」(投稿画面のサイドバー部分)になります。

remove_meta_boxのコード例(投稿ページ)を下記にまとめています。

remove_meta_box( 'postcustom','post','normal' ); // 投稿ページのカスタムフィールド
remove_meta_box( 'postexcerpt','post','normal' ); // 投稿ページの抜粋
remove_meta_box( 'commentsdiv','post','normal' ); // 投稿ページのコメント
remove_meta_box( 'tagsdiv-post_tag' , 'post' , 'side' ); // 投稿ページの投稿のタグ
remove_meta_box( 'trackbacksdiv','post','normal' ); // 投稿ページのトラックバック
remove_meta_box( 'commentstatusdiv','post','normal' ); // 投稿ページのディスカッション
remove_meta_box( 'slugdiv','post','normal' ); // 投稿ページのスラッグ
remove_meta_box( 'authordiv','post','normal' ); // 投稿ページの作成者
remove_meta_box( 'revisionsdiv','post','normal' ); // 投稿ページのリビジョン

ユーザーの権限に合わせ、投稿画面からパーツを削除するコード例は下記になります。
権限と削除したいパーツを指定し、functions.phpに記述してください。

function remove_menus () {
    if (!current_user_can('administrator')) { //管理者ではない場合
  // 投稿画面の項目を非表示
    function remove_default_post_screen_metaboxes() {
     remove_meta_box( 'postcustom','post','normal' ); // カスタムフィールド
     remove_meta_box( 'postexcerpt','post','normal' ); // 抜粋
     remove_meta_box( 'commentstatusdiv','post','normal' ); // ディスカッション
     remove_meta_box( 'commentsdiv','post','normal' ); // コメント
     remove_meta_box( 'trackbacksdiv','post','normal' ); // トラックバック
     remove_meta_box( 'authordiv','post','normal' ); // 作成者
     remove_meta_box( 'slugdiv','post','normal' ); // スラッグ
     remove_meta_box( 'revisionsdiv','post','normal' ); // リビジョン
     remove_meta_box( 'tagsdiv-post_tag' , 'post' , 'side' ); // 投稿のタグ
     }
    }
}
add_action('admin_menu','remove_default_post_screen_metaboxes');

 

「remove_post_type_support」を利用した投稿画面の不要なパーツを削除する方法

remove_post_type_support( 'post', 'title' ); // タイトル

「post」部分は、投稿タイプの指定です。
投稿ページの場合は「post」、固定ページの場合は「page」としてください。

「title」部分は、パーツの種類の指定です。

remove_post_type_supportのコード例(投稿ページ)を下記にまとめています。

remove_post_type_support( 'post', 'title' ); // 投稿ページのタイトル
remove_post_type_support( 'post', 'editor' ); // 投稿ページの本文欄
remove_post_type_support( 'post', 'author' ); // 投稿ページの作成者
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', 'comments' ); // 投稿ページのコメント
remove_post_type_support( 'post', 'revisions' ); // 投稿ページのリビジョン
remove_post_type_support( 'post', 'page-attributes' ); // 投稿ページのページ属性
remove_post_type_support( 'post', 'post-formats' ); // 投稿ページの投稿フォーマット

ユーザーの権限に合わせ、投稿画面からパーツを削除するコード例は下記になります。
権限と削除したいパーツを指定し、functions.phpに記述してください。

function remove_menus () {
    if (!current_user_can('administrator')) { //管理者ではない場合
  // 投稿画面の項目を非表示
    function remove_post_supports() {
	remove_post_type_support( 'post', 'title' ); // タイトル
	remove_post_type_support( 'post', 'editor' ); // 本文欄
	remove_post_type_support( 'post', 'author' ); // 作成者
	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', 'comments' ); // コメント
	remove_post_type_support( 'post', 'revisions' ); // リビジョン
	remove_post_type_support( 'post', 'page-attributes' ); // ページ属性
	remove_post_type_support( 'post', 'post-formats' ); // 投稿フォーマット
     }
    }
}
add_action( 'init', 'remove_post_supports' );

まとめ

「remove_meta_box」でもパーツを削除できますが、
「remove_post_type_support」でパーツを削除すると、クイック編集内や管理メニュー項目から削除可能です。

WordPressに慣れていないユーザーもいるので、
管理画面、投稿画面のカスタマイズはなるべく対応したほうがいいと思います。
ユーザーにとって使いやすい画面構成にすることで、事故防止にもなります。
とても簡単なので、上記の記述を参考に実践してみてください。

参考リンク

下記は参考にしたサイトになります。
詳しく知りたい方はどうぞ。
http://wpcj.net/976

この記事は、SUZUKI が書きました。
Webデザイナー募集中
Webデザイナー募集中(東京)ただいま東京事務所ではウェブデザイナーを募集しています!詳しくはこちらをご参照ください。