回答:
wp_##_options
(wp_99_options)—各ブログのテーブルがありますoption_name
= を見つけますwp_user_roles
wp_user_roles
をwp_##_user_roles
( "wp_99_user_roles")に変更しますあなたが編集しているテーブルがありますoption_id
、blog_id
、option_name
、option_value
、autoload
。ただし、=のレコードを除き、どのレコードも変更しないでください。このようなテーブルには、このようなレコードが1つしかありません。option_name
wp_user_roles
wp_user_roles
Multisiteがインストールされていない場合に使用されます。ここでは、テーブルが作成されたときのバグのように見えます。
これが私がよく知っている問題である場合、MUインストールの背後でmemcacheセットアップを実行していますか?私は、「notoptions」memcache配列で何か良いもの(wp_user_rolesキーなど)がスタックするオプションオブジェクトのキャッシュの問題(2.9で目撃)があることを発見しました。
memcacheの上で実行し、これが可能性のように思えるdelete blogid:options:notoptions
場合は、11211を介してマシンにtelnet接続してみてください。ここで、blogidは問題が発生しているブログのIDです。管理パネルを更新し、ドロップダウンに役割があるかどうかを確認します。その場合、問題が見つかりました。
更新:OK、それであなたはあなたの問題を見つけませんでした-あなたは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/>";
}
ありがとうございました。この問題は、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();
}
一部のユーザーは、特にルートサイト専用の空のサイトユーザーテーブルを持っている場合があることを指摘したいと思います。この問題が発生した場合、問題を解決する方法は次のとおりです。
「1」は常にルートサイトのIDです。
乾杯。
wp_
接頭辞はsinde設定されているwp-config.php
と、ちょうどデフォルトをwp_
。1
実際、ルートサイトです。ただし1
、これは、自動生成される一意の増分IDである必要はありません。