เหตุใดบทบาทของฉันไม่ปรากฏใน Multi-site / Network


16

เครือข่ายของฉันแสดงบทบาทในบางไซต์และไม่อยู่ในที่อื่น

ด้วยเหตุผลบางอย่างที่ฉันไม่สามารถอธิบายได้เมื่อฉันเพิ่มผู้ใช้ใหม่ฉันไม่มีบทบาทให้เลือกในกล่องแบบเลื่อนลงของไซต์ย่อยในเครือข่ายของฉัน นอกจากนี้ผู้ใช้ใหม่ของฉันที่กำหนดให้กับเว็บไซต์จะไม่ปรากฏในรายการผู้ใช้ของฉันสำหรับไซต์นั้น

นี่เป็นสิ่งที่แก้ไขได้หรือไม่

ใต้ภาพสถานการณ์ปัจจุบัน

บทบาทไม่แสดง

ด้านล่างเป็นรูปภาพที่แสดงไซต์หลักที่มีบทบาทอย่างเหมาะสม แต่ไซต์ย่อยของเครือข่ายไม่สามารถทำได้

บทบาทที่แสดง

คำตอบ:


29
  1. กำหนด ID บล็อก Multisite ของคุณ ฉันจะใช้ 99 เป็นตัวอย่าง
  2. เข้าไปในฐานข้อมูล
  3. ไปที่ตารางนี้: wp_##_options(wp_99_options) - คุณจะมีตารางสำหรับแต่ละบล็อก
  4. ค้นหาระเบียนโดยที่option_name=wp_user_roles
  5. เปลี่ยนข้อความwp_user_rolesเป็นwp_##_user_roles("wp_99_user_roles")

ตารางที่คุณกำลังแก้ไขจะมีoption_id, blog_id, option_name, ,option_value autoloadแต่ไม่เปลี่ยน RECORD ใด ๆยกเว้นการบันทึกที่=option_name wp_user_rolesจะมีบันทึกเดียวในตารางนี้เช่นนี้

wp_user_roles จะใช้เมื่อไม่มีการติดตั้ง Multisite และที่นี่จะปรากฏราวกับว่ามันเป็นเพียงข้อบกพร่องเมื่อสร้างตาราง


ขอขอบคุณ! คำแนะนำการช่วยชีวิตที่นี่ นี่คือคำตอบที่ถูกต้องแน่นอน
ZaMoose

1
ฉันไม่มี "wp_user_roles" ในตารางของฉันสิ่งที่ฉันทำคือการคัดลอกเนื้อหาของ wp_4_options> wp_user_roles (วัตถุ json ขนาดใหญ่หรืออาร์เรย์ต่อเนื่องฉัน dunnow) ไปยังระเบียนใหม่ที่เรียกว่า wp_5_options แก้ไขปัญหาของฉัน โหวต +1 ถึงกระนั้นก็ทำให้ฉันอยู่ในเส้นทางที่ถูกต้อง
Xananax

ฉันยังแก้ไขการลบบันทึก "wp _ ## _ user_roles" จากตาราง wp_options หลักเพราะดูเหมือนว่าจะแทนที่หนึ่งจากตัวเลือก wp _ ## _
เปาโล

1
คำตอบที่ยอดเยี่ยม!
jnthnclrk

7
สำหรับผู้ที่ย้ายเว็บไซต์ของคุณและเปลี่ยนคำนำหน้าข้อผิดพลาดอาจเป็น "wp _ ## _ user_roles" แทนที่จะเป็น "{new_prefix} _ ## _ user_roles"
Xhynk

2

หากนี่เป็นปัญหาที่ฉันทราบดีคุณกำลังเรียกใช้การตั้งค่า memcache ที่อยู่เบื้องหลังการติดตั้ง MU ของคุณหรือไม่ ฉันพบว่ามีปัญหาแคช (เห็นใน 2.9) สำหรับตัวเลือกวัตถุที่สิ่งที่ดี (เช่นคีย์ wp_user_roles) ติดอยู่ในอาร์เรย์ memcache "notoptions"

หากคุณเรียกใช้บน memcache และดูเหมือนว่าเป็นไปได้ลอง telnetting ลงในเครื่องผ่าน 11211 ประเภทที่ blogid delete blogid:options:notoptionsเป็น id ของบล็อกที่คุณเห็นปัญหา รีเฟรชพาเนลผู้ดูแลระบบและดูว่ามีบทบาทในดรอปดาวน์หรือไม่ ถ้าใช่คุณพบปัญหาแล้ว

อัปเดต : ตกลงดังนั้นคุณไม่พบปัญหาของคุณ - คุณไม่ได้ใช้ memcache ฉันยังคงตรวจสอบบทบาทของวัตถุเพื่อค้นหาสิ่งที่เสียหายหรือไม่มีอยู่จริง ฉันเชื่อว่าเป็นผู้นำที่ดีที่สุดของคุณ คุณสามารถใช้รหัสนี้เพื่อดัมพ์ตารางตัวเลือก:

global $wpdb;
$array = $wpdb->get_col("SELECT option_name FROM $wpdb->options");
foreach ($array as $key) {
    echo $key . ": <code>";
    var_dump(get_option($key), true));
            echo "</code><br/>";
}

บรรณาธิการ ฉันไม่รู้ว่า memcache นั้นเข้าสู่เซิร์ฟเวอร์ของฉันได้อย่างไร ฉันไม่ได้ใช้เลย อาจเป็นเพราะฉันติดตั้งแคช w3 ฉันลองลบมันทำให้ฉันข้อความว่า not_found ฉันไปข้างหน้าและปิดการใช้งาน memcache เนื่องจากฉันไม่ได้ใช้ ฉันยังคงมีปัญหา
Geo

ฉันขอโทษที่ไม่ได้แก้ปัญหาของคุณ ฉันเจอหนึ่งในนี้มากดังนั้นมันจึงเป็นการคาดเดาที่ดีที่สุดของฉัน ฉันจะดูบทบาทของบล็อกนั้นต่อไป มันมีอยู่หรือไม่ อัปเดตคำตอบของฉันด้านบนด้วยความหวังว่าจะช่วยได้
บรรณาธิการ

1

ฉันมีปัญหานี้กับการติดตั้ง Multisite หลังจากติดตั้ง WordPress ใหม่และกู้คืนจากการสำรองข้อมูล Updraft Plus

เมื่อผมตรวจสอบuser_rolesบันทึก OPTION_NAME ถูกตั้งค่ายังคงเดิมสี่คำนำหน้าตัวอักษรเช่นในขณะที่คำนำหน้าสำหรับการติดตั้งที่สองคือสิ่งที่ต้องการpre1_user_rolespre2_user_roles

ฉันอัปเดตเป็นpre2_user_rolesและตัวเลือกจะปรากฏขึ้นอีกครั้งในหน้าตัวเลือกผู้ใช้


1

ขอขอบคุณ. ปัญหานี้แสดงถึงการดีบักทึบ 10 ชั่วโมง นี่เป็นหมีที่แท้จริงสำหรับฉัน

ในการขยายบนนี้เล็กน้อยฉันได้เพิ่มฟังก์ชั่นในเว็บไซต์ของฉันที่จะช่วยให้คุณแก้ไขปัญหานี้ได้หากคุณกำลังสร้างเว็บไซต์โดยทางโปรแกรม

โดยทั่วไปสิ่งนี้จะตรวจสอบว่าwp_user_rolesมีการตั้งค่าในบล็อกที่ระบุหรือไม่ หากเป็นเช่นนั้นฟังก์ชันจะใช้wp_user_rolesเพื่อตั้งค่าตัวเลือกใหม่ในลักษณะที่ถูกต้อง

  /**
   * Sometimes, user roles do not properly get set when a new site is set up
   * To fix this issue, we check to make sure the data is added properly and update if not
   * See /wordpress/11725/why-are-my-roles-not-visible-in-a-multi-site-network
   */
function maybeAddUserRoles($blog_id){
    switch_to_blog($blog_id);
    if(get_option('wp_user_roles')){
      update_option('wp_'.$blog_id.'_user_roles', get_option('wp_user_roles'));
      delete_option('wp_user_roles');
    }
    restore_current_blog();
  }

0

ฉันแค่อยากจะบอกว่าขอบคุณสำหรับบทความนี้เพราะฉันค้นหาวิธีแก้ปัญหานี้มานานแล้ว

มันเป็นเพียงเพราะฉันใช้ปลั๊กอินในการโคลนไซต์ของฉันและไม่เคยอัปเดตwp_##_user_rolesอย่างถูกต้อง เมื่อเว็บไซต์ที่คัดลอกมาจากwp_13...มันเป็นโคลนไปยังเว็บไซต์ใหม่แต่รายการนี้ยังคงติดอยู่ที่wp_81...wp_13


0

ฉันแค่ต้องการชี้ให้เห็นว่าบางคนอาจยังมีตารางผู้ใช้ไซต์ว่าง - โดยเฉพาะสำหรับไซต์รากของพวกเขา หากปัญหานี้เกิดขึ้นวิธีแก้ไขปัญหาก็คือทำสิ่งต่อไปนี้:

  1. ไปที่ตารางwp_usermeta
  2. ค้นหารายการใด ๆ ด้วย meta_key wp_capabilities
  3. เปลี่ยน meta_key จากwp_capabilitiesเป็นwp_1_capabilities

ฉันเชื่อว่า "1" เป็น ID ของไซต์รูทเสมอ

ไชโย


wp_คำนำหน้าการตั้งค่า sinde ค่าเริ่มต้นและเพียงเพื่อwp-config.php แน่นอนไซต์ราก แต่ไม่จำเป็นต้องเป็นเช่นนี้เป็นรหัสที่ไม่ซ้ำกันและเพิ่มขึ้นที่ถูกสร้างขึ้นโดยอัตโนมัติ wp_11
ไกเซอร์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.