WordPressの管理画面を使いやすくする:コメント無効・管理バー整理・投稿一覧にサムネイル列を追加

カテゴリー お知らせ

「ダッシュボード整理編」に続いて、今回は 管理画面のUIを整える実践編 です。

  • コメント機能をサイト全体で止める
  • 投稿一覧にサムネイルを表示する
  • フロント側の管理バーを整理・非表示にする
  • 管理画面用のCSS/JSを読み込む

といった、現場でよく使う小技を、functions.php に書くだけで実現する内容になっています。

前提:どこに書くコードなのか

全て テーマ(できれば子テーマ)の functions.php に追加する想定です。

  • パス例:wp-content/themes/your-theme/functions.php
  • 親テーマ更新で消えないように、子テーマに書くのが基本です。

1. コメント機能をサイト全体で無効化する

「そもそもコメント欄は使わないサイト」がかなり多いです。
そういう場合は、中途半端に閉じるのではなく、管理画面からフロントまで“全部止める”ほうが安全です。

コード(functions.php)

// コメント機能をサイト全体で無効化する
add_action( 'init', function () {
  foreach ( get_post_types() as $post_type ) {
    if ( post_type_supports( $post_type, 'comments' ) ) {
      remove_post_type_support( $post_type, 'comments' );
      remove_post_type_support( $post_type, 'trackbacks' );
    }
  }
} );

// 管理画面メニューから「コメント」を削除
add_action( 'admin_menu', function () {
  remove_menu_page( 'edit-comments.php' );
} );

// 管理バーから「コメント」アイコンを削除
add_action( 'wp_before_admin_bar_render', function () {
  global $wp_admin_bar;
  $wp_admin_bar->remove_menu( 'comments' );
} );

// フロント側でもコメントを開かない
add_filter( 'comments_open', '__return_false', 20, 2 );
add_filter( 'pings_open',    '__return_false', 20, 2 );

// 既存コメントも表示しない
add_filter( 'comments_array','__return_empty_array', 10, 2 );

これでどうなるか

  • 投稿タイプの「ディスカッション」系サポートを外す
  • 管理画面左メニューの「コメント」が消える
  • 上部の管理バーのコメントアイコンも消える
  • 個別投稿のコメント欄も閉じ、既存コメントも表示しない

「コメント機能なんて最初からなかった」ような状態に近づきます。

2. 投稿一覧にサムネイル列を追加する

メディアを多用するサイトでは、投稿一覧にサムネイルが出ていると管理がかなり楽になります。

コード(functions.php)

// 投稿一覧にサムネイル列を追加
add_filter( 'manage_posts_columns', function ( $columns ) {
  $new = array();
  $new['thumbnail'] = 'サムネイル';
  return $new + $columns;
} );

add_action( 'manage_posts_custom_column', function ( $column, $post_id ) {
  if ( 'thumbnail' === $column ) {
    if ( has_post_thumbnail( $post_id ) ) {
      echo get_the_post_thumbnail( $post_id, array( 60, 60 ) );
    } else {
      echo '—';
    }
  }
}, 10, 2 );

ポイント

  • manage_posts_columns で「サムネイル」という列を1つ追加
  • manage_posts_custom_column で、その列に実際の画像(60×60)を表示
  • アイキャッチ未設定の投稿は と表示

必要であれば manage_pages_columns などにも同様の処理を入れることで、固定ページ一覧にも拡張できます。

3. フロント側の管理バーを非表示(一般ユーザーだけ)

ログイン中にサイトを見ると、画面上部に黒いツールバー(管理バー)が出ます。
管理者には便利ですが、一般ユーザー(寄稿者・編集者など)には邪魔なことも多いです。

そこで「管理者だけ表示し、それ以外には非表示」にします。

コード(functions.php)

// 一般ユーザーのフロント管理バーを非表示
add_filter( 'show_admin_bar', function ( $show ) {
  if ( ! current_user_can( 'manage_options' ) ) {
    return false;
  }
  return $show;
} );

解説

  • current_user_can( 'manage_options' ) は、基本的に「管理者かどうか」の判定です。
  • 管理者以外には false を返すことで、フロント側で管理バーが表示されなくなります。
  • 管理画面(/wp-admin/)には影響しません。

4. 管理バーの WordPress ロゴだけを消す

管理バー自体は便利だから残したい。
でも 左上の WordPress ロゴメニュー(WP公式サイトへのリンク)だけは消したい、という要望もよくあります。

コード(functions.php)

// 管理バーのWordPressロゴメニューを隠す
function mytheme_remove_adminbar_wp_logo( $wp_admin_bar ) {
  if ( ! is_admin() ) { // 管理画面では残して、フロントだけ消す運用
    $wp_admin_bar->remove_node( 'wp-logo' );
  }
}
add_action( 'admin_bar_menu', 'mytheme_remove_adminbar_wp_logo', 999 );

調整例

  • 管理画面でも消したい場合は、if ( ! is_admin() ) { ... } を丸ごと削って、
    いきなり $wp_admin_bar->remove_node( 'wp-logo' ); だけ書けばOKです。

5. ツールメニューを非表示にする

クライアントの誤操作を防ぎたい場合、
管理画面の「ツール」メニューをそもそも出さないこともあります。

// ツールメニューを非表示
add_action( 'admin_menu', function () {
  remove_menu_page( 'tools.php' );
} );

  • 「インポート」「エクスポート」などを触ってほしくないときに使います。
  • 管理者自身は、必要なら一時的にコメントアウトして作業する前提。

6. 管理画面用 CSS / JS を読み込む

  • 独自の管理画面デザインを少し整えたい
  • 投稿一覧に色をつけたい
  • 管理画面だけで使う簡単な補助スクリプトを入れたい

といったときは、admin_enqueue_scripts で CSS / JS を読み込むのが定石です。

想定ディレクトリ構成

your-theme/
  functions.php
  assets/
    admin.css
    admin.js

コード(functions.php)

// 管理画面用 CSS / JS を読み込む
add_action( 'admin_enqueue_scripts', function () {
  $dir = get_template_directory();
  $uri = get_template_directory_uri();

  // CSS
  $css_path = $dir . '/assets/admin.css';
  if ( file_exists( $css_path ) ) {
    wp_enqueue_style(
      'mytheme-admin-css',
      $uri . '/assets/admin.css',
      array(),
      filemtime( $css_path ) // 更新のたびにキャッシュクリア
    );
  }

  // JS
  $js_path = $dir . '/assets/admin.js';
  if ( file_exists( $js_path ) ) {
    wp_enqueue_script(
      'mytheme-admin-js',
      $uri . '/assets/admin.js',
      array( 'jquery' ),      // jQuery に依存させる場合
      filemtime( $js_path ),
      true                    // フッターで読み込み
    );
  }
} );

ポイント

  • file_exists() で存在確認してから読み込むので、
    ファイルがまだない状態でもエラーになりません。
  • バージョンに filemtime() を使うことで、更新のたびにキャッシュが自動更新されます。

7. ついで:ブロックエディタ(Gutenberg)を無効化する

クラシックエディタ運用に統一したい場合は、
グローバルに Gutenberg を無効化するフィルタも併用できます。

// ブロックエディタ(Gutenberg)をグローバルで無効
add_filter( 'use_block_editor_for_post',      '__return_false', 10 );
add_filter( 'use_block_editor_for_post_type', '__return_false', 10 );

ただし、

  • 将来的にはブロックエディタ前提のエコシステムになっていく方向
  • 新しいプラグインやテーマがブロック前提になる流れ

を踏まえると、「案件・クライアントの状況を見て慎重に使う」ラインです。

8. まとめ

今回の管理画面UI編でやったことを整理すると、次のようになります。

項目コードの場所主な効果
コメント機能の全停止functions.phpフロントも管理画面もコメントを使わない運用に
投稿一覧サムネイル列functions.phpアイキャッチ付き投稿の管理がしやすくなる
一般ユーザーの管理バー非表示functions.phpクライアントのフロント表示をすっきりさせる
管理バーWPロゴ削除functions.phpブランド的/見た目の違和感を減らす
ツールメニュー非表示functions.php誤操作によるエクスポート/インポートを防ぐ
admin用CSS/JSの読み込みfunctions.php + assets/管理画面にだけ軽いカスタムUIを適用

「何を触らせるか」ではなく、「何を触らせないか」を決めていくと、クライアントサイトの運用はだいぶ安定します。

その他の記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)