ワードプレスのtranslate_user_roleフィルタの使用方法・解説

概要

translate_user_roleフィルタは、ユーザーのロール(権限グループ)名の翻訳テキストを取得する際に使用されます。このフィルタを利用することで、ユーザー権限の表示をカスタマイズしたり、多言語サイトに対応した権限表示を実現することができます。具体的には、以下のような機能実装に役立つことが多いです:

  1. ユーザー権限のカスタマイズ
  2. 多言語対応のユーザーインターフェース
  3. 特定のユーザーグループに合わせた表示変更
  4. サイトのブランディングに基づいたロール名の変更
  5. プラグインによるロールの追加や変更に対応
  6. ロール名のスタイル調整
  7. 権限管理プラグインとの連携
  8. 表示内容の動的変更

構文

add_filter('translate_user_role', 'custom_translate_user_role', 10, 2);

パラメータ

  • $translated_role (string): 翻訳されたロール名
  • $role (string): 元のロール名

戻り値

  • string: カスタマイズまたは変更されたロール名

関連する関数

translate_user_role

使用可能なバージョン

WordPress 2.0以降で利用可能です。

コアファイルのパス

wp-includes/capabilities.php

この関数のアクションでの使用可能性

アクション 使用可能
mu_plugin_loaded
registered_post_type
plugins_loaded
wp_roles_init
setup_theme
after_setup_theme
set_current_user
init
register_sidebar
wp_loaded
send_headers
parse_query
pre_get_posts
wp
template_redirect
get_header
wp_head

サンプルコード

サンプルコード 1: ユーザー権限名のカスタマイズ

add_filter('translate_user_role', function($translated_role, $role) {
    if ($role === 'editor') {
        return '編集者'; // "editor" を "編集者" に翻訳
    }
    return $translated_role;
});

このコードは、ロール名 ‘editor’ を日本語の ‘編集者’ に変更します。

サンプルコード 2: 多言語対応のユーザーインターフェース

add_filter('translate_user_role', function($translated_role, $role) {
    if ($role === 'administrator') {
        return __('管理者', 'textdomain'); // 管理者ロールの翻訳
    }
    return $translated_role;
});

このコードでは、’administrator’ を多言語対応で ‘管理者’ に翻訳します。__('...')関数はローカライズに使用します。

サンプルコード 3: スタイル調整

add_filter('translate_user_role', function($translated_role, $role) {
    if ($role === 'author') {
        return '<strong>著者</strong>'; // 'author' を太字の '著者' に変更
    }
    return $translated_role;
});

この例では、’author’ の表示を強調するために、太字スタイルで ‘著者’ に変更しています。

サンプルコード 4: プラグインによるロールの変更に対応

add_filter('translate_user_role', function($translated_role, $role) {
    if ($role === 'subscriber') {
        return '購読者'; // "subscriber" を "購読者" に変更
    }
    return $translated_role;
});

このコードは、’subscriber’ ロールの表示を ‘購読者’ に変更し、プラグインで追加されたロールにも対応します。

サンプルコード 5: デフォルトの翻訳にフィルターを追加

add_filter('translate_user_role', function($translated_role, $role) {
    // デフォルトの翻訳を取得
    $default_translations = [
        'contributor' => '寄稿者',
        'administrator' => '管理者',
    ];

    return $default_translations[$role] ?? $translated_role;
});

このコードでは、配列を使用して複数のロール名をデフォルトの翻訳に基づいて変更します。該当するロールがない場合は元の値を返します。

この関数について質問する


上の計算式の答えを入力してください