답변:
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
. 그러나 = 레코드를 제외하고는 어떤 레코드도 변경하지 마십시오 . 이 테이블에는 이와 같은 단일 레코드 만 있습니다.option_name
wp_user_roles
wp_user_roles
는 다중 사이트 설치가 없을 때 사용되며 여기서는 테이블을 만들 때 단지 버그 인 것처럼 보입니다.
이것이 내가 아는 문제인 경우, MU 설치 뒤에 memcache 설정을 실행하고 있습니까? wp_user_roles 키와 같은 좋은 항목이 "notoptions"memcache 배열에 갇히는 옵션 객체에 대해 캐시 문제 (2.9에서 확인 됨)가있는 것으로 나타났습니다.
memcache 위에서 실행했을 때 이것이 가능할 것 같으면 11211을 통해 시스템에 telnetting을 시도하십시오 delete blogid:options:notoptions
. 여기서 blogid는 문제가있는 블로그의 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/>";
}
감사합니다. 이 문제는 견고한 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이므로 반드시 그럴 필요는 없습니다 .