Eklenti olmadan kullanıcı rolü adını yeniden adlandırmanın bir yolu var mı?


26

Eklenti kullanmak yerine, bir kullanıcı rolü adını kanca ile yeniden adlandırmak yine de var mı?

Düzenle

Örneğin, administrator»owner


Neye ulaşmak istediğinizi açıklayabilir misiniz?
BjornW

kullanıcı rolü adını yeniden adlandır, işte bu. örneğin, yönetici -> sahibi
Sean Lee

Yanıtlar:


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/


Bunu işe alamadım. Ne yaparsam yapayım, o zaman hala arka uç oluşturma sürecinde 'Abone' olarak adlandırılır. Görünüşe göre $wp_rolesşimdi [role_objects]dizisinin bir parçası.
Zeth

Bu çok garip bir şey yaptı. Sadece ilk harfi ("Yönetici") etkiledi!
Mark


2

Aslında, bunu başarmanın birçok yolu vardır:

İle saf php ve mysql Eğer db tefrika girişi düzenleyebilirsiniz. Gerçekten de, Wordpress seri hale getirilmiş rol dizisini wp_optionstabloda saklar .

Yani:

  1. Serileştirilmiş diziyi al:
    SELECT option_value as serialized_string FROM wp_options WHERE option_name = 'wp_user_roles';
  2. Dize seri hale getirmek - php: $rolesArray = unserialize($serialized_string)
  3. Rol adını değiştir - php: $rolesArray['role_key']['name'] = "New name"
  4. Diziyi geri serile - php: echo serialize($rolesArray)
  5. Db option_valueiçeriğini önceki noktadan çıkışla değiştirin

Wordpress ile kendinize güveniyorsanız , saklanan değeri almak için wp-cli içindeki gömülü Wordpress REPL'yi bile kullanabilir get_option('wp_user_roles')ve ardından update_optiongüncellemek için kullanabilirsiniz .

Ve (her zaman) seçenekleri değiştirmeden önce db'yi yedeklemeyi unutmayın;)


Aksi takdirde, role_key değerini umursamıyorsanız…

Wp-cli ile bunu başarmak çok kolay :

  1. mevcut rolü çoğalt - $ wp role create new_role 'New Role' --clone=old_role
  2. eskisini sil - $ wp role delete old_role
  3. daha sonra new_role'ı kullanıcı (lar) ile ilişkilendirin.
  4. Sonunda old_role = new_role kadar 1. ve 2. adımları tekrarlayın

1

Özel bir yerelleştirme dosyası oluşturabilirsiniz. Bu dosyayı alın: http://svn.automattic.com/wordpress-i18n/pot/trunk/wordpress.pot ve PoEdit aracını kullanarak düzenleyin (örneğin). Bir sonraki adımda, yerelleştirme dosyasını en_GB.mo (ya da diğer) olarak kaydedin ve wp-config dosyasını düzenleyin:

define ("WPLANG", "en_GB");


1
Zaten bu yöntemi denedim, ancak bazı açılan menüleri çevrilmedi.
Sean Lee,

0

Doğrudan DB'nizde düzenleyebilirsiniz; web siteniz için kalıcı olarak düzenlenecektir. WP'nin kullanıcı rollerini burada tuttuğu yer

SELECT * from blog_options WHERE option_name = 'blog_user_roles'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.