มีวิธีการเปลี่ยนชื่อบทบาทผู้ใช้โดยไม่ต้องใช้ปลั๊กอินหรือไม่?


26

ยังมีการเปลี่ยนชื่อบทบาทผู้ใช้ผ่านเบ็ดแทนที่จะใช้ปลั๊กอิน?

แก้ไข

ตัวอย่างเช่นadministrator»owner


คุณช่วยอธิบายสิ่งที่คุณต้องการให้สำเร็จได้ไหม?
BjornW

เปลี่ยนชื่อชื่อผู้ใช้นั่นแหล่ะ ตัวอย่างเช่นผู้ดูแลระบบ -> เจ้าของ
Sean Lee

คำตอบ:


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]ส่วนหนึ่งของอาร์เรย์
Zeth

สิ่งนี้ทำสิ่งที่แปลกมาก มีผลกับตัวอักษรตัวแรกเท่านั้น ("ผู้ดูแลระบบ")!
Mark

3

วิธีแก้ไขง่ายๆคือเพียงเพิ่มบทบาทผู้ใช้โดยใช้add_roleวิธีที่คุณสามารถตั้งชื่อสิ่งที่คุณต้องการและเพิ่มความสามารถที่คุณต้องการ http://codex.wordpress.org/Function_Reference/add_role


พยายามหลีกเลี่ยงสิ่งนี้ แต่ฉันคิดว่ามันเป็นวิธีที่สะอาดที่สุดโดยไม่ต้องใช้ปลั๊กอิน
Sean Lee

2

จริงๆแล้วมีหลายวิธีที่จะบรรลุเป้าหมายดังกล่าว:

ด้วยpure 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. แทนที่option_valueเนื้อหาdb ด้วยเอาต์พุตจากจุดก่อนหน้า

หากคุณรู้สึกมั่นใจกับ Wordpress คุณสามารถใช้Wordpress REPL ในตัวใน wp-cliเพื่อดึงค่าที่เก็บไว้ด้วย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. ในที่สุดทำซ้ำขั้นตอนที่ 1 และ 2 จนกระทั่ง old_role = new_role

1

คุณสามารถสร้างไฟล์การแปลที่กำหนดเองได้ รับไฟล์นี้: http://svn.automattic.com/wordpress-i18n/pot/trunk/wordpress.potและแก้ไขโดยใช้เครื่องมือ PoEdit (ตัวอย่าง) ในขั้นตอนถัดไปบันทึกไฟล์การแปลเป็น en_GB.mo (หรืออื่น ๆ ) และแก้ไขไฟล์ wp-config:

define ("WPLANG", "en_GB");


1
ลองใช้วิธีนี้แล้ว แต่เมนูแบบเลื่อนลงบางรายการไม่ได้แปล
Sean Lee

0

คุณสามารถแก้ไขได้โดยตรงในฐานข้อมูลของคุณและจะถูกแก้ไขอย่างถาวรสำหรับเว็บไซต์ของคุณ นี่คือที่ที่ WP รักษาบทบาทผู้ใช้

SELECT * from blog_options WHERE option_name = 'blog_user_roles'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.