Mengapa peran saya tidak terlihat di Multi-situs / Jaringan?


16

Jaringan saya menunjukkan peran di beberapa situs dan bukan di yang lain.

Untuk beberapa alasan yang saya tidak bisa jelaskan, ketika saya menambahkan pengguna baru, saya tidak memiliki peran untuk dipilih di kotak drop-down dari sebuah sub-situs di jaringan saya. Juga, pengguna baru saya yang ditugaskan ke situs tidak muncul di daftar pengguna saya untuk situs itu.

Apakah ini sesuatu yang bisa diperbaiki?

Di bawah gambar situasi saat ini.

Peran tidak Ditampilkan

Di bawah ini adalah gambar yang menunjukkan situs utama dengan peran yang benar di sana, tetapi sub-situs jaringan tidak.

Peran ditampilkan

Jawaban:


29
  1. Tentukan ID Blog Multisite Anda. Saya akan menggunakan 99 sebagai contoh
  2. Pergilah ke database
  3. Buka tabel ini: wp_##_options (wp_99_options) - Anda akan memiliki tabel untuk setiap blog
  4. Temukan catatan di mana option_name =wp_user_roles
  5. Ubah teks wp_user_rolesmenjadi wp_##_user_roles("wp_99_user_roles")

Tabel Anda mengedit akan memiliki option_id, blog_id, option_name, option_value, autoload. Namun, JANGAN MENGUBAH REKOR APA PUN kecuali catatan di mana option_name=wp_user_roles . Hanya akan ada satu catatan dalam tabel ini seperti ini.

wp_user_roles digunakan ketika tidak ada instalasi Multisite, dan di sini, seolah-olah itu hanya bug ketika tabel dibuat.


Terima kasih! Nasihat yang menyelamatkan jiwa di sini. Ini adalah jawaban yang tepat.
ZaMoose

1
Saya TIDAK punya "wp_user_roles" di meja saya, yang saya lakukan adalah menyalin konten wp_4_options> wp_user_roles (objek json besar atau array serial, saya dunnow) ke catatan baru yang disebut wp_5_options (ini adalah peran blog yang hilang) dan itu memperbaiki masalah saya. Memilih +1 tetap karena menempatkan saya di jalur yang benar
Xananax

Saya memutuskan juga MENGHAPUS catatan "wp _ ## _ user_roles" dari tabel utama wp_options, karena sepertinya menimpa yang dari opsi wp _ ## _.
Paolo

1
Jawaban yang brilian!
jnthnclrk

7
Untuk orang yang telah memigrasikan situs Anda dan mengubah awalan, kesalahan itu bisa berupa "wp _ ## _ user_roles" alih-alih "{new_prefix} _ ## _ user_roles"
Xhynk

2

Jika ini adalah masalah yang saya tahu dengan baik, Anda menjalankan pengaturan memcache di belakang instalasi MU Anda? Saya telah menemukan bahwa ternyata ada masalah cache (disaksikan di 2.9) untuk objek opsi di mana sesuatu yang baik (seperti kunci wp_user_roles) terjebak dalam array memcache "notoptions".

Jika Anda menjalankan di atas memcache, dan ini terdengar seperti kemungkinan, coba telnetting ke mesin melalui 11211. Ketik delete blogid:options:notoptions , di mana blogid adalah id dari blog di mana Anda melihat masalah tersebut. Refresh panel admin dan lihat apakah ada peran dalam dropdown. Jika demikian, Anda telah menemukan masalah Anda.

UPDATE : OK, jadi Anda tidak menemukan masalah Anda - Anda tidak menjalankan memcache. Saya masih akan memeriksa objek peran, mencari yang korup atau tidak ada. Saya percaya ini adalah petunjuk terbaik Anda. Anda dapat menggunakan kode ini untuk membuang tabel opsi:

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

Editor. Saya tidak tahu bagaimana memcache masuk ke server saya. Saya tidak menggunakannya sama sekali. Mungkin karena saya menginstal cache w3. Saya mencoba menghapusnya memberi saya pesan yang mengatakan not_found. Saya melanjutkan dan menonaktifkan memcache, karena saya tidak menggunakannya. Saya masih memiliki masalah.
Geo

Maaf itu bukan solusi untuk masalah Anda. Saya sering mengalami yang satu ini jadi itu tebakan terbaik saya. Saya akan terus mencari ke objek peran untuk blog itu. Apakah itu ada Memperbarui jawaban saya di atas dengan harapan ini akan membantu.
editor

1

Saya punya masalah dengan instalasi Multisite setelah menginstal ulang WordPress dan memulihkan dari cadangan Updraft Plus.

Ketika saya memeriksa user_rolescatatan, option_name masih diatur ke awalan empat karakter asli, seperti pre1_user_roles, sedangkan awalan untuk instalasi kedua adalah sesuatu seperti pre2_user_roles.

Saya memperbarui ini ke pre2_user_rolesdan opsi segera muncul kembali di halaman opsi pengguna.


1

TERIMA KASIH. Masalah ini mewakili 10 jam debugging yang solid. Ini adalah beruang nyata bagi saya.

Untuk sedikit memperluas ini, saya menambahkan fungsi ke situs saya yang akan memungkinkan Anda untuk menyelesaikan masalah ini jika Anda membuat situs secara terprogram.

Pada dasarnya, ini akan memeriksa untuk melihat apakah wp_user_rolesdiatur dalam blog yang ditentukan. Jika ya, fungsi tersebut akan digunakan wp_user_rolesuntuk mengatur opsi baru dengan cara yang benar.

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

Saya hanya ingin mengucapkan terima kasih atas artikel ini karena saya sudah mencari solusi untuk masalah ini sejak lama.

Itu hanya karena saya telah menggunakan plugin untuk mengkloning situs saya dan tidak pernah memperbarui dengan wp_##_user_rolesbenar. Ketika situs disalin dari wp_13...itu dikloning ke situs baru wp_81...tetapi entri ini masih macet wp_13.


0

Saya hanya ingin menunjukkan bahwa beberapa orang mungkin masih memiliki tabel pengguna situs kosong — khusus untuk situs root mereka. Jika masalah ini terjadi, cara untuk memperbaikinya adalah dengan melakukan hal berikut:

  1. Pergi ke tabel wp_usermeta
  2. Temukan entri apa pun dengan meta_key wp_capabilities
  3. Ubah meta_key dari wp_capabilities ke wp_1_capabilities

Saya percaya "1" selalu merupakan ID dari situs root.

Bersulang.


Itu wp_ awalan diatur Sinde wp-config.phpdefault dan hanya untuk wp_. The 1memang merupakan situs akar. Tetapi tidak harus 1seperti ini karena ini adalah ID unik dan tambahan yang dibuat secara otomatis.
kaiser
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.