moriya

WordPress管理画面のカスタマイズ

WordPressの管理画面をカスタマイズする方法を紹介します。
今回紹介するのは、案件でも頻繁に利用するカスタマイズです。

※今回のコードはすべてテーマのfunctions.phpに記述します。

 

【サイドメニューの不要な項目を非表示にする】
※非表示なので、直接URLにアクセスすると表示されます。

remove_menu_page()、remove_submenu_page()を利用して項目を非表示にします。

メインメニュー用

remove_menu_page($menu_slug);

サブメニュー用

remove_submenu_page($menu_slug, $submenu_slug);

■ユーザー権限、またはユーザー名で非表示を実行する場合は、下記を記述する。

global $current_user

 

■管理者1の場合は外観メニューを非表示します。

if($current_user->data->user_login === '管理者1') {
   remove_menu_page('themes.php'); // 外観
}

 

add_action()の第三引数は実行する順番。
サンプルではAdvanced Custom Fieldの項目を非表示にするために「11」を指定してます。

 

add_action('admin_menu', 'remove_menu', 11);

 

■全体のサンプルコード

function remove_menu() {
    global $current_user;
   //例 管理者1以外は非表示を実行する
 if($current_user->data->user_login === '管理者1') {
        remove_submenu_page('edit.php', 'edit-tags.php?taxonomy=post_tag');//投稿タグ
       remove_submenu_page('edit.php', 'edit-tags.php?taxonomy=category');//投稿カテゴリー
        remove_submenu_page('edit.php?post_type=カスタム投稿タイプ', 'edit-tags.php?taxonomy=カスタム投稿タイプタクソノミー&post_type=カスタム投稿タイプ');//カスタム投稿 タクソノミー
       remove_menu_page('edit.php?post_type=page'); // 固定ページ
     remove_menu_page('upload.php'); // メディア
       remove_menu_page('link-manager.php'); // リンク
      remove_menu_page('edit-comments.php'); // コメント
        remove_menu_page('themes.php'); // 外観
     remove_menu_page('plugins.php'); // プラグイン
     remove_menu_page('users.php'); // ユーザー
        remove_menu_page('tools.php'); // ツール
     remove_menu_page('options-general.php'); // 設定
        remove_menu_page('edit.php?post_type=acf'); //Advanced Custom Field(プラグイン)
    }
   //例 権限が投稿者、寄稿者にはプロフィールメニューを出さない。
    if($current_user->caps['contributor'] || $current_user->caps['editor']) {
     remove_menu_page('profile.php'); // プロフィール
    }
}
add_action('admin_menu', 'remove_menu', 11);

 

関数リファレンス/remove menu page - WordPress Codex 日本語版
リンク

 

【ダッシュボードのカスタマイズ】
※初期値から表示させない方法です。

 

■remove_meta_box()を利用して非表示にします。

function custom_remove_dashboard_widgets() {
  remove_meta_box( 'dashboard_incoming_links', 'dashboard', 'normal' ); // 被リンク
    remove_meta_box( 'dashboard_plugins', 'dashboard', 'normal' ); // プラグイン
    remove_meta_box( 'dashboard_primary', 'dashboard', 'side' ); // WordPressブログ
    remove_meta_box( 'dashboard_secondary', 'dashboard', 'normal' ); // WordPressフォーラム
    remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' ); // クイック投稿
    remove_meta_box( 'dashboard_recent_drafts', 'dashboard', 'side' ); // 最近の下書き
    remove_meta_box( 'dashboard_recent_comments', 'dashboard', 'normal' ); // 最近のコメント
    remove_meta_box( 'dashboard_right_now', 'dashboard', 'normal' ); // 現在の状況
    remove_meta_box( 'dashboard_activity', 'dashboard', 'normal'); // アクティビティ
}
add_action('wp_dashboard_setup', 'custom_remove_dashboard_widgets');

【WordPress へようこそ!パネルを非表示。】
※項目は仕様上消せないようです。なので強制的に非表示にします。

 

ユーザー情報を取得して「WordPress へようこそ!パネル」の表示状態をfalseに変更します。

function hide_welcome_panel() {
  $user_id = get_current_user_id();
   if(get_user_meta( $user_id, 'show_welcome_panel', true )) {
       update_user_meta( $user_id, 'show_welcome_panel', false );
    }
}
add_action( 'load-index.php', 'hide_welcome_panel' );

 

【投稿のラベル変更】
サンプルでは投稿をキャンペーンに変更する場合です。

 

function custom_post_menu_label() {
   global $menu;
   global $submenu;
    $menu[5][0] = 'キャンペーン';
   $submenu['edit.php'][5][0] = 'キャンペーン一覧';
    $submenu['edit.php'][10][0] = '新しいキャンペーン';
}
add_action('init', 'custom_post_object_label');

function custom_post_object_label() {
 global $wp_post_types;
  $labels = &$wp_post_types['post']->labels;
 $labels->name = 'キャンペーン';
  $labels->singular_name = 'キャンペーン';
 $labels->add_new = _x('新規作成', 'キャンペーン');
 $labels->add_new_item = '新しいキャンペーン';
   $labels->edit_item = 'キャンペーンの編集';
  $labels->new_item = '新しいキャンペーン';
   $labels->view_item = 'キャンペーンを表示';
  $labels->search_items = 'キャンペーン検索';
    $labels->not_found = 'キャンペーンが見つかりませんでした';
  $labels->not_found_in_trash = 'ゴミ箱のキャンペーンにも見つかりませんでした';
}
add_action('admin_menu', 'custom_post_menu_label');

 

_x()関数については
_x:WordPress私的マニュアル
リンク

 

【管理画面用にCSSを追記する。】
サンプルでは通常投稿の更新ボタンの色を赤に変更されます。

 

function admin_css_custom() {
$style = <<<EOT

<style>
    body.post-type-post .button.button-primary.button-large {
       background: #a00; border-color: #a00;
   }
</style>

EOT;
 echo $style;
};
add_action('admin_print_styles', 'admin_css_custom');

 

以上です。

 

お問い合わせはこちら