プラグインなしでユーザーロール名を変更する方法はありますか?


26

とにかく、プラグインを使用する代わりに、フックを介してユーザーロール名の名前を変更することはできますか?

編集

たとえば、administrator»owner


達成したいことについて詳しく教えてください。
BjornW

ユーザーロール名の変更、それだけです。たとえば、管理者->所有者
ショーンリー

回答:


44
function change_role_name() {
    global $wp_roles;

    if ( ! isset( $wp_roles ) )
        $wp_roles = new WP_Roles();

    //You can list all currently available roles like this...
    //$roles = $wp_roles->get_names();
    //print_r($roles);

    //You can replace "administrator" with any other role "editor", "author", "contributor" or "subscriber"...
    $wp_roles->roles['administrator']['name'] = 'Owner';
    $wp_roles->role_names['administrator'] = 'Owner';           
}
add_action('init', 'change_role_name');

http://www.garyc40.com/2010/04/ultimate-guide-to-roles-and-capabilities/


これを機能させることができませんでした。私が何をするかに関係なく、それはバックエンド作成プロセスではまだ「サブスクライバー」と呼ばれています。$wp_roles今ではその[role_objects]配列の一部を持っているように見えます。
ゼス

これは非常に奇妙なことをしました。最初の文字(「オドミニストレーター」)にのみ影響しました!
マーク


2

実際、それを達成する方法はたくさんあります。

純粋なPHPとMySQLあなたはデシベルでシリアル化されたエントリを編集することができます。実際、Wordpressはシリアル化されたロールの配列をwp_optionsテーブルに保存します。

そう:

  1. シリアル化された配列を取得します。
    SELECT option_value as serialized_string FROM wp_options WHERE option_name = 'wp_user_roles';
  2. 文字列のシリアル化を解除します– php: $rolesArray = unserialize($serialized_string)
  3. ロール名を変更します– php: $rolesArray['role_key']['name'] = "New name"
  4. 配列をシリアル化して戻す– php: echo serialize($rolesArray)
  5. db option_valueコンテンツを前のポイントからの出力に置き換えます

Wordpressに自信がある場合は、wp-cli埋め込まれたWordpress REPLを使用して、保存されている値を取得しget_option('wp_user_roles')、それを使用update_optionして更新することもできます。

そして(常に)オプション操作の前にデータベースをバックアップすることを忘れないでください;)


それ以外の場合、role_keyの値を気にしない場合…

wp-cliで簡単に実現できます:

  1. 既存の役割を複製します– $ wp role create new_role 'New Role' --clone=old_role
  2. 古いものを削除します– $ wp role delete old_role
  3. 次に、new_roleをユーザーに関連付けます。
  4. 最終的に、old_role = new_roleになるまで手順1と2を繰り返します

1

カスタムローカライズファイルを作成できます。このファイルを入手してくださいhttp : //svn.automattic.com/wordpress-i18n/pot/trunk/wordpress.potおよびPoEditツールを使用して編集します(たとえば)。次のステップで、ローカライズファイルをen_GB.mo(またはその他)として保存し、wp-configファイルを編集します。

define( "WPLANG"、 "en_GB");


1
すでにこの方法を試しましたが、いくつかのプルダウンメニューは翻訳されていませんでした。
ショーンリー

0

DBで直接編集することができ、ウェブサイト用に永久に編集されます。WPがユーザーロールを保持する場所

SELECT * from blog_options WHERE option_name = 'blog_user_roles'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.