管理画面のテキストを自由に変更する方法

Cocoonカスタマイズ集
この記事は約6分で読めます。
記事内に広告が含まれています。

はじめに

管理画面に表示されるテキストは、自由に変更することができます。

例えば、「ユーザー」を「スタッフ」に変更して、社内用サイトの管理画面の表記を統一したいという要望にも対応可能です。

この記事では、その具体的な方法について説明します。

投稿・固定ページのテキストを変更する方法

標準の投稿タイプ「投稿」や「固定ページ」の管理画面に表示されるテキストは、自由に変更することができます。
管理メニューのメイン・サブメニューや投稿一覧など、管理画面のさまざまな箇所で「投稿」という表記を「お知らせ」に変更します。

完成イメージ

実装手順

以下のコードをfunctions.phpに追加します。

add_action('init', function () {
  global $wp_post_types;

  $name   = 'お知らせ';                           // 投稿タイプ名
  $labels = &$wp_post_types['post']->labels;      // 投稿タイプのラベルを取得

  // 基本名称
  $labels->name           = $name;                // 投稿タイプの名前
  $labels->singular_name  = $name;                // 投稿タイプの単数形の名前
  $labels->menu_name      = $name;                // 管理画面メニューの名前
  $labels->name_admin_bar = $name;                // ツールバーに表示する名前
  $labels->all_items      = $name . '一覧';       // 投稿一覧の名前

  // 新規追加・編集
  $labels->add_new      = _x('追加', $name);      // 新規追加リンクの名前
  $labels->add_new_item = $name . 'の新規追加';   // 新規追加画面のタイトル
  $labels->new_item     = '新規' . $name;         // 新規投稿のタイトル
  $labels->edit_item    = $name . 'の編集';       // 編集画面のタイトル

  // 表示・検索
  $labels->view_item    = $name . 'を表示';       // 投稿表示リンクの名前
  $labels->search_items = $name . 'を検索';       // 検索結果のタイトル

  // 該当なし
  $labels->not_found          = $name . 'が見つかりませんでした';              // 検索結果がない場合のメッセージ
  $labels->not_found_in_trash = 'ゴミ箱に' . $name . 'は見つかりませんでした'; // ゴミ箱にない場合のメッセージ
});

固定ページの場合は、以下のように変更します。

$labels = &$wp_post_types['page']->labels;

メインナビゲーションのメイン・サブメニューのテキストを変更する方法

メインナビゲーション(左メニュー)のメイン・サブメニューに表示されるテキストも自由に変更できます。
「投稿」を「お知らせ」、「プロフィール」を「スタッフ」に変更します

完成イメージ

実装手順

以下のコードをfunctions.phpに追加します。

add_action('admin_menu', function () {
  global $menu, $submenu;

  // メイン・サブメニューの変更定義
  $menu_changes = [
    // メニューのスラッグ => [トップメニュー名, サブメニュー変更配列]
    'edit.php' => [
      'top'  => 'お知らせ',
      'subs' => [
        'edit.php'     => 'お知らせ一覧',
        'post-new.php' => '新規お知らせ',
      ],
    ],
    'users.php' => [
      'top'  => 'スタッフ',
      'subs' => [
        'users.php'    => 'スタッフ一覧',
        'user-new.php' => '新規スタッフ追加',
        'profile.php'  => 'スタッフ',
      ],
    ],
  ];

  foreach ($menu_changes as $slug => $data) {
    // トップメニュー変更
    if (is_array($menu)) {
      foreach ($menu as $index => $item) {
        if (isset($item[2]) && $item[2] === $slug) {
          $menu[$index][0] = $data['top'];
          break;
        }
      }
    }

    // サブメニュー変更
    if (isset($submenu[$slug]) && is_array($submenu[$slug])) {
      foreach ($submenu[$slug] as $key => $subitem) {
        if (isset($subitem[2], $data['subs'][$subitem[2]])) {
          $submenu[$slug][$key][0] = $data['subs'][$subitem[2]];
        }
      }
    }
  }
}, 999);

投稿・固定ページ以外の管理画面テキストを変更する方法

投稿・固定ページの場合は、initを使って変更することで、関連する編集画面や一覧画面のテキストもまとめて変更できます。
しかし、それ以外の管理画面の文字列(ユーザーやコメントなど)は、gettextを使って個別に置換する必要があります。

実装手順

以下のコードをfunctions.phpに追加します。

add_filter('gettext', function ($translated_text, $text, $domain) {
  // 管理画面のユーザー関連文字列を置換
  $replacements = [
    'ユーザー'           => 'スタッフ',
    'ユーザーを追加'     => 'スタッフを追加',
    '新規ユーザーを追加' => '新規スタッフを追加',
    'ユーザー一覧'       => 'スタッフ一覧',
    'ユーザー名'         => 'スタッフ名',
  ];

  return $replacements[$translated_text] ?? $translated_text;
}, 10, 3);

さいごに

今回紹介した方法を使えば、管理画面に表示される投稿や固定ページ、ユーザー関連のテキストを自由に変更できます。
管理メニューの変更、文字列置換を組み合わせることで、サイト用途に応じた管理画面の表記を統一し、より使いやすい管理環境を構築することが可能です。

タイトルとURLをコピーしました