Tại sao vai trò của tôi không hiển thị trong Đa trang web / Mạng?


16

Mạng của tôi đang hiển thị vai trò trong một số trang web chứ không phải trong các trang web khác.

Vì một số lý do mà tôi không thể giải thích, khi tôi thêm người dùng mới, tôi không có vai trò nào để chọn trong hộp thả xuống của một trang web phụ trong mạng của mình. Ngoài ra, người dùng mới của tôi được chỉ định cho một trang web không hiển thị trong danh sách người dùng của tôi cho trang web đó.

Đây có phải là một cái gì đó có thể sửa chữa?

Dưới đây là một hình ảnh của tình hình hiện tại.

Vai trò không hiển thị

Dưới đây là hình ảnh hiển thị trang web chính với các vai trò đúng ở đó, nhưng các trang web phụ của mạng thì không.

Vai trò hiển thị

Câu trả lời:


29
  1. Xác định ID Blog nhiều trang của bạn. Tôi sẽ sử dụng 99 làm ví dụ
  2. Đi vào cơ sở dữ liệu
  3. Chuyển đến bảng này: wp_##_options(wp_99_options) - bạn sẽ có một bảng cho mỗi blog
  4. Tìm bản ghi trong đó option_name=wp_user_roles
  5. Thay đổi văn bản wp_user_rolesthành wp_##_user_roles("wp_99_user_roles")

Bảng bạn đang chỉnh sửa sẽ có option_id, blog_id, option_name, option_value, autoload. Tuy nhiên, KHÔNG THAY ĐỔI BẤT K REC GHI NÀO trừ bản ghi trong đó option_name= wp_user_roles. Sẽ chỉ có một bản ghi trong bảng như thế này.

wp_user_roles được sử dụng khi không có cài đặt Multisite và ở đây, nó xuất hiện như thể nó chỉ là một lỗi khi bảng được tạo.


Cảm ơn bạn! Lời khuyên cứu người ở đây. Đây là chính xác câu trả lời đúng.
ZaMoose

1
Tôi đã KHÔNG có "wp_user_roles" trong bảng của mình, những gì tôi đã làm là sao chép nội dung của wp_4_options> wp_user_roles (một đối tượng json lớn hoặc một mảng được tuần tự hóa, tôi dunnow) vào một bản ghi mới có tên wp_5_options (đây là vai trò của blog) đã khắc phục sự cố của tôi. Tuy nhiên, được bình chọn +1 vì nó đưa tôi đi đúng hướng
Xananax

Tôi cũng đã giải quyết TÌM HIỂU bản ghi "wp _ ## _ user_roles" từ bảng wp_options chính, vì nó dường như ghi đè lên bản ghi từ các tùy chọn wp _ ## _.
Paolo

1
Câu trả lời rực rỡ!
jnthnclrk

7
Đối với những người đã di chuyển trang web của bạn và thay đổi tiền tố, lỗi có thể là "wp _ ## _ user_roles" thay vì "{new_prefix} _ ## _ user_roles"
Xhynk 17/11/11

2

Nếu đây là vấn đề tôi biết rất rõ, bạn đang chạy cài đặt memcache đằng sau cài đặt MU của bạn? Tôi đã thấy rằng rõ ràng có vấn đề về bộ đệm (được chứng kiến ​​trong 2.9) cho đối tượng tùy chọn trong đó một cái gì đó tốt (như khóa wp_user_roles) bị kẹt trong mảng memcache "notoptions".

Nếu bạn chạy trên memcache và điều này nghe có vẻ như có khả năng, hãy thử dịch chuyển vào máy qua 11211. Loại delete blogid:options:notoptions, trong đó blogid là id của blog mà bạn thấy vấn đề. Làm mới bảng quản trị và xem nếu có vai trò trong danh sách thả xuống. Nếu vậy, bạn đã tìm thấy vấn đề của bạn.

CẬP NHẬT : OK, vì vậy bạn không tìm thấy vấn đề của mình - bạn không chạy memcache. Tôi vẫn sẽ kiểm tra các đối tượng vai trò, tìm kiếm một đối tượng tham nhũng hoặc không tồn tại. Tôi tin rằng đó là sự dẫn dắt tốt nhất của bạn. Bạn có thể sử dụng mã này để kết xuất bảng tùy chọn:

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/>";
}

Biên tập viên. Tôi không biết làm thế nào memcache vào máy chủ của tôi. Tôi không sử dụng nó cả. Có lẽ vì tôi đã cài đặt w3 cache. Tôi đã thử xóa nó đã cho tôi một thông báo nói rằng not_found. Tôi đã đi trước và vô hiệu hóa memcache, vì tôi không sử dụng nó. Tôi vẫn đang có vấn đề.
Geo

Tôi xin lỗi đó không phải là một giải pháp cho vấn đề của bạn. Tôi chạy vào cái này rất nhiều vì vậy đó là phỏng đoán tốt nhất của tôi. Tôi sẽ tiếp tục xem xét các đối tượng vai trò cho blog đó. Nó tồn tại? Cập nhật câu trả lời của tôi ở trên với hy vọng nó sẽ giúp.
biên tập viên

1

Tôi gặp vấn đề với cài đặt Multisite sau khi cài đặt lại WordPress và khôi phục từ bản sao lưu Updraft Plus.

Khi tôi kiểm tra user_rolesbản ghi, tùy chọn_name vẫn được đặt thành tiền tố bốn ký tự ban đầu, chẳng hạn như pre1_user_roles, trong khi đó tiền tố cho cài đặt thứ hai là như thế pre2_user_roles.

Tôi đã cập nhật thông tin này pre2_user_rolesvà các tùy chọn ngay lập tức xuất hiện lại trong trang tùy chọn người dùng.


1

CẢM ƠN BẠN. Vấn đề này đại diện cho 10 giờ gỡ lỗi vững chắc. Đây là một con gấu thực sự cho tôi.

Để mở rộng về vấn đề này một chút, tôi đã thêm một chức năng vào trang web của mình để cho phép bạn giải quyết vấn đề này nếu bạn đang tạo các trang web theo chương trình.

Về cơ bản, điều này sẽ kiểm tra xem nếu wp_user_rolesđược đặt trong blog được chỉ định. Nếu có, hàm sẽ sử dụng wp_user_rolesđể đặt tùy chọn mới theo cách chính xác.

  /**
   * 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

Tôi chỉ muốn nói lời cảm ơn vì bài viết này vì tôi đã tìm kiếm một giải pháp cho vấn đề này trong một thời gian dài.

Đó đơn giản là vì tôi đã sử dụng một plugin để sao chép các trang web của mình và nó không bao giờ cập nhật wp_##_user_rolesđúng cách. Khi trang web được sao chép từ wp_13...nó đã được sao chép sang một trang web mới wp_81...nhưng mục này vẫn bị kẹt tại wp_13.


0

Tôi chỉ muốn chỉ ra rằng một số người vẫn có thể có một bảng người dùng trống bảng đặc biệt cho trang web gốc của họ. Nếu sự cố này xảy ra, cách khắc phục sự cố là bằng cách thực hiện như sau:

  1. Đi đến bảng wp_usermeta
  2. Tìm bất kỳ mục nào với meta_key wp_capabilities
  3. Thay đổi meta_key từ wp_capabilities thành wp_1_capabilities

Tôi tin rằng "1" luôn là ID của trang gốc.

Chúc mừng.


Các wp_tiền tố được thiết lập Sinde wp-config.phpgiá trị mặc định và chỉ để wp_. Thực 1sự là trang web gốc. Nhưng nó không phải là 1vì đây là một ID duy nhất và tăng dần được tạo tự động.
kaiser
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.