다중 사이트 / 네트워크에서 내 역할이 보이지 않는 이유는 무엇입니까?


16

내 네트워크는 다른 사이트가 아닌 일부 사이트에서 역할을 표시합니다.

설명 할 수없는 이유 때문에 새 사용자를 추가 할 때 네트워크 하위 사이트의 드롭 다운 상자에서 선택할 수있는 역할이 없습니다. 또한 사이트에 할당 된 새 사용자가 해당 사이트의 사용자 목록에 표시되지 않습니다.

이 문제는 고칠 수 있습니까?

현재 상황의 이미지 아래

보이지 않는 역할

아래는 역할이있는 기본 사이트를 보여주는 그림이지만 네트워크의 하위 사이트는 그렇지 않습니다.

보여주는 역할

답변:


29
  1. 멀티 사이트 블로그 ID를 결정하십시오. 99를 예로 사용하겠습니다
  2. 데이터베이스로 이동
  3. 이 테이블로 이동하십시오 : wp_##_options(wp_99_options) — 각 블로그에 대한 테이블이 있습니다.
  4. option_name=를 기록을 찾습니다wp_user_roles
  5. 텍스트 wp_user_roleswp_##_user_roles( "wp_99_user_roles") 로 변경하십시오.

당신이해야합니다 편집 표 option_id, blog_id, option_name, option_value, autoload. 그러나 = 레코드를 제외하고는 어떤 레코드도 변경하지 마십시오 . 이 테이블에는 이와 같은 단일 레코드 만 있습니다.option_namewp_user_roles

wp_user_roles 는 다중 사이트 설치가 없을 때 사용되며 여기서는 테이블을 만들 때 단지 버그 인 것처럼 보입니다.


감사합니다! 인명 구조 조언. 이것은 정답입니다.
ZaMoose

1
내 테이블에 "wp_user_roles"가 없습니다. wp_4_options> wp_user_roles (큰 json 객체 또는 직렬화 된 배열, 나는 dunnow)의 내용을 wp_5_options (이것은 블로그가없는 역할 임)라는 새 레코드에 복사하는 것입니다. 내 문제를 해결했다. 그럼에도 불구하고 나를 올바른 길로
인도

기본 wp_options 테이블에서 "wp _ ## _ user_roles"레코드를 제거하는 것도 해결했습니다. wp _ ## _ options의 레코드를 재정의하는 것 같습니다.
Paolo

1
훌륭한 답변!
jnthnclrk

7
사이트를 마이그레이션하고 접두사를 변경 한 사용자의 경우 오류는 "{new_prefix} _ ## _ user_roles"대신 "wp _ ## _ user_roles"
Xhynk

2

이것이 내가 아는 문제인 경우, 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/>";
}

편집자. memcache가 어떻게 서버에 들어 왔는지 모르겠습니다. 나는 그것을 전혀 사용하지 않습니다. w3 캐시를 설치했기 때문일 수 있습니다. 삭제를 시도했지만 not_found라는 메시지가 표시되었습니다. 나는 그것을 사용하지 않기 때문에 계속해서 memcache를 비활성화했습니다. 여전히 문제가 있습니다.
Geo

죄송합니다. 문제의 해결책이 아닙니다. 나는 이것에 많이 닿아 서 최고의 추측이었습니다. 해당 블로그의 역할 객체를 계속 조사합니다. 존재합니까? 도움이되기를 희망하여 위의 답변을 업데이트했습니다.
편집자

1

WordPress를 다시 설치하고 Updraft Plus 백업에서 복원 한 후 멀티 사이트 설치에서이 문제가 발생했습니다.

user_roles레코드를 확인할 때 option_name은 여전히 ​​원래 네 문자 접두사 (예 :)로 설정 pre1_user_roles되었지만 두 번째 설치의 접두사는 비슷했습니다 pre2_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_keywp_capabilities 에서 wp_1_capabilities 로 변경하십시오.

"1"은 항상 루트 사이트의 ID라고 생각합니다.

건배.


wp_접두사는 sinde 설정 wp-config.php에 그냥 기본값을 wp_. 은 1참으로 루트 사이트입니다. 그러나 이것이 1자동 생성되는 고유하고 증가하는 ID이므로 반드시 그럴 필요는 없습니다 .
카이저
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.