• 解決済 shinshin1005

    (@shinshin1005)


    こんにちは。
    任意でroleをふたつ作成しまして

    role_gold, role_silver

    これらを管理画面で表示するときに日本語にしたいのですが

    ゴールド会員, シルバー会員

    たとえばJQueryで強引にするなら、
    admin_footerにこういう感じの追加になるかと思いますが(あくまで例です)

    function my_foot_replace() {
    echo `<script type=”text/javascript”>
    //<![CDATA[
    jQuery(“.role”).each(function() {
    var obj = jQuery(this);
    var objrole = obj.text();
    if(objrole == “role_gold”) obj.text(“ゴールド会員”);
    });
    //]]>
    </script>`;
    }
    add_action(admin_footer, my_foot_replace);

    javascriptを使用しないで
    wordpressの関数で実現するには、どのように記述すればよいでしょうか?

    ※User Role Editiorで作成しています。プラグインのほう質問すべきでしょうか?
    あくまで翻訳のことなので、使い方全般のこちらかと思いました…

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • 残念ながら、その部分は翻訳ではありません。

    WordPress は add_role という関数を使ってロール(権限グループ)を作成します。

    add_role( $role, $display_name, $capabilities );
    で指定できるパラメーターは
    $role:WordPress内部で扱う権限グループの名前(空白とか大文字不可)
    $display_name:管理画面などで表示される名前
    $capabilities:権限を配列で指定(投稿できるやファイルのアップロードができる、など)
    となります。

    なので、$display_name が指定できれば良いだけなのですが、
    User Role Editiorでは
    add_role($ure_currentRole, $user_role, $capabilities);
    となっていて、ソースをたどると、$user_roleには Add New RoleのName欄に入力された名前がそのまま使われています。
    $ure_currentRole には $user_role をPHPのstrtolower関数で整形された値が入ります。

    当該部分にフックも存在していないので、shinshin1005さんの書かれたとおり、User Role Editiorを使うのであればJavaScriptなどで置換するしかありません。

    もしくはデータベースを直接いじれるのであれば、wp_optionsテーブルにoption_name が wp_user_roles に権限関係の情報がシリアライズされた状態で保存されているので、がんばって書き換えてみてください。

    私もUser Role Editiorを使った事がありますが、この辺が面倒だったので、以後権限周りは自作しています。

    参考:http://gatespace.jp/2012/05/24/custom-post-type-and-user-role-fix/

    あ、シリアライズされたデータは単に文字列を置換すれば良い訳ではないので、意味が分からないのであればやめた方が良いです。

    私も以前から何とかならんのかと思っていて、ちょっとやってみました。以下のコードでうまくいっているような気がします。が、不測の事態が起こらないとも限りませんので、コピペの前に「ブロンズ会員」などでテストしてみてください。

    ■ functions.php
    <?php
    add_action('admin_init', 'update_role_name');
    function update_role_name(){
        global $wp_roles;
        $gold = get_role('role_gold');
        if (!empty($gold)) {
    	$wp_roles->roles['role_gold']['name'] = 'ゴールド会員';
    	$wp_roles->role_names['role_gold'] = 'ゴールド会員';
        }
        $silver = get_role('role_silver');
        if (!empty($silver)) {
    	$wp_roles->roles['role_silver']['name'] = 'シルバー会員';
    	$wp_roles->role_names['role_silver'] = 'シルバー会員';
        }
    }
    ?>

    参照
    http://wordpress.stackexchange.com/questions/71290/programmatically-changing-role-information-editing-role-name-and-deleting

    トピック投稿者 shinshin1005

    (@shinshin1005)

    こんにちは、確認が遅くなりたいへん申し訳ありませんでした。

    pluto1234さん
    ご案内のとおりに設定し、見事に日本化できております!
    テストしたのち、本番の追加ロールをすべて日本語化しました。
    ありがとうございました。

    nobitaさん
    gatespaceさん
    参考コードやリンクをありがとうございます。
    勉強になります。ご回答をどうもありがとうございました。

    皆様今後ともよろしくお願いいたします。

5件の返信を表示中 - 1 - 5件目 (全5件中)

トピック「独自roleを日本語表示」には新たに返信することはできません。