LoginSignup
35
45

More than 5 years have passed since last update.

WordPress 管理画面カスタマイズまとめ

Last updated at Posted at 2017-11-14

本来ならば管理者ではないユーザーに管理画面は公開したくないものですが、それでも、という場合のカスタマイズ用コードで主なものをまとめました。
使用中のテーマのfunction.phpに貼り付けるなどして使ってください。

管理者かどうかの判定には current_user_can( 'administrator' ), current_user_can( 'manage_options' ) などが使用できます。

機能の制限

ダッシュボードからリダイレクト

function redirect_dashboard() {
    global $pagenow;
    if ( is_admin() && 'index.php' == $pagenow ) {
        wp_redirect( admin_url( 'edit.php' ) );
    }
}
add_action( 'admin_init', 'redirect_dashboard' );

バージョン更新

// バージョン更新を非表示
add_filter( 'pre_site_transient_update_core', '__return_zero' );
// APIによるバージョンチェックの通信をさせない
remove_action( 'wp_version_check', 'wp_version_check' );
remove_action( 'admin_init', '_maybe_update_core' );

機能の非表示

ようこそ画面の非表示

remove_action( 'welcome_panel', 'wp_welcome_panel' );

メニュー項目非表示

function remove_menus(){
    remove_menu_page( 'index.php' );                  // ダッシュボード
    remove_menu_page( 'edit.php' );                   // 投稿
    remove_menu_page( 'upload.php' );                 // メディア
    remove_menu_page( 'edit.php?post_type=page' );    // 固定ページ
    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_submenu_page( 'themes.php', 'widgets.php' );  // 外観->ウィジェット
}
add_action( 'admin_menu', 'remove_menus' );

管理バーの非表示

add_filter( 'show_admin_bar', '__return_false' );

管理バーの項目の非表示

function remove_admin_bar_menus( $wp_admin_bar ) {
    $wp_admin_bar->remove_node( 'wp-logo' );            // WordPressマーク
    $wp_admin_bar->remove_node( 'view-site' );          // サイトを表示
    $wp_admin_bar->remove_node( 'dashboard' );          // ダッシュボード
    $wp_admin_bar->remove_node( 'comments' );           // コメント
    $wp_admin_bar->remove_menu( 'updates' );            // 更新
    $wp_admin_bar->remove_node( 'my-account' );         // マイアカウント
}
add_action( 'admin_bar_menu', 'remove_admin_bar_menus', 100 );

ヘルプと表示オプションを非表示

ヘルプと表示オプションは画面右上にあります。

function hide_help_and_options(){
    echo '<style type="text/css">'.
        '#contextual-help-link-wrap,'.
        '#screen-options-link-wrap'.
        '{display:none;}</style>'.PHP_EOL;
}
add_action( 'admin_head', 'hide_help_and_options' );

投稿画面のメタボックスの非表示

// 投稿画面から不要な機能を削除
function my_remove_meta_boxes() {
    remove_meta_box( 'postexcerpt', 'post', 'normal' );         // 抜粋
    remove_meta_box( 'trackbacksdiv', 'post', 'normal' );       // トラックバック
    remove_meta_box( 'slugdiv', 'post', 'normal' );             // スラッグ
    remove_meta_box( 'postcustom', 'post', 'normal' );          // カスタムフィールド
    remove_meta_box( 'commentsdiv', 'post', 'normal' );         // コメント
    remove_meta_box( 'postimagediv', 'post', 'normal' );        // アイキャッチ画像
    remove_meta_box( 'tagsdiv-post_tag', 'post', 'normal' );    // タグ
    remove_meta_box( 'commentstatusdiv', 'post', 'normal' );    // ディスカッション
    remove_meta_box( 'authordiv', 'post', 'normal' );           // 作成者
    remove_meta_box( 'revisionsdiv', 'post', 'normal' );        // リビジョン
    remove_meta_box( 'formatdiv', 'post', 'normal' );           // フォーマット
    remove_meta_box( 'pageparentdiv', 'post', 'normal' );       // 属性
}
add_action( 'admin_menu', 'my_remove_meta_boxes' );

remove_meta_boxを用いてディスカッションを消すと、投稿へのコメントが無効になる場合があります。コメントできるようにするには下のようにします。

// コメント設定を隠す
function hide_disscussion() {
    echo '<style type="text/css">'.
        '#commentstatusdiv{display: none;}'.
        '</style>'.PHP_EOL;
}
add_action( 'admin_print_styles-post.php', 'hide_disscussion' );
add_action( 'admin_print_styles-post-new.php', 'hide_disscussion' );

これ以外にも投稿における機能そのものを削ることができます。

function my_remove_post_type_support() {
    remove_post_type_support( 'post', 'thumbnail' );        // アイキャッチ画像
    remove_post_type_support( 'post', 'trackbacks' );       // トラックバック
}
add_action( 'init', 'my_remove_post_type_support' );

プロフィール設定の項目の非表示

function my_admin_style() {
    echo '<style type="text/css">'.
        '#your-profile h2,'.
        '#your-profile table:nth-of-type(1),'.  // 個人設定
        '#your-profile table:nth-of-type(4),'.  // あなたについて
        '.user-first-name-wrap,'.               // 名
        '.user-last-name-wrap,'.                // 姓
        '.user-url-wrap,'.                      // ウェブサイト
        '.user-sessions-wrap,'.                 // セッション
        '.user-profile-picture'.                // Gravatar
        '{display: none;}</style>'.PHP_EOL;
}
add_action( 'admin_print_styles-profile.php', 'my_admin_style' );

フッターの非表示

// 管理画面フッターを変更
function custom_admin_footer () {
    echo '';
}
add_filter( 'admin_footer_text', 'custom_admin_footer' );

// 管理画面フッターのバージョン番号を削除
function remove_footer_version() {
    remove_filter( 'update_footer', 'core_update_footer' );
}
add_action( 'admin_menu', 'remove_footer_version' );

表示制限

自分の投稿だけ一覧に表示

function get_my_posts( $wp_query ) {
    if( is_admin() && !wp_doing_ajax() && !current_user_can( 'edit_others_posts' )){
        $wp_query->set( 'author', get_current_user_id() );
    }
}
add_action( 'pre_get_posts', 'get_my_posts' );

function hide_others_posts( $views ) {
    unset( $views['all'] );     // すべて
    unset( $views['draft'] );   // 下書き
    unset( $views['publish'] ); // 公開済み
    unset( $views['sticky'] );  // 固定表示
    unset( $views['pending'] ); // 保留中
    unset( $views['trash'] );   // ゴミ箱

    return $views;
}
add_filter( 'views_edit-post', 'hide_others_posts' );

自分の画像だけメディア一覧に表示

function get_my_medias( $query ) {
    if ( $user = wp_get_current_user() ) {
        $query['author'] = $user->ID;
    }
    return $query;
}
add_action( 'ajax_query_attachments_args', 'get_my_medias' );
35
45
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
45