여러 Wordpress 웹 사이트에서 사용자 데이터를 공유하는 가장 좋은 방법은 무엇입니까?


10

우선, 다중 사이트는 내가 찾고있는 것이 아닙니다. 사용자 계정을 사용하려는 별도의 도메인에 Wordpress를 사용하는 5 개의 웹 사이트가 있습니다. 전체 네트워크에서 사용자 데이터를 공유해야하며 사용자가 계정을 만들면 다른 모든 웹 사이트에도 즉시 액세스 할 수 있습니다. 멀티 사이트를 사용할 때 Wordpress에서 권장하지 않는 작업은 다음과 같습니다.

서로 상호 연결된 사이트, 데이터를 공유하는 사용자 또는 사용자를 공유 할 계획이라면 다중 사이트 네트워크가 최상의 솔루션이 아닐 수 있습니다. - http://codex.wordpress.org/Before_You_Create_A_Network (제 1 항, 제 3 문장)

여기 http://wordpress.org/support/topic/multiple-sites-same-users-how 와 여기 http://xentek.net/articles/528/에 언급 된 "공유 사용자 테이블 트릭"을 사용해 보았습니다. 워드 프레스 공유 사용자 테이블 트릭 구현 및 기타 여러 장소 ... 문제는이 정보가 2-7 세이며 Wordpress 3.5.1을 사용하고 있는데이 "트릭"은 작동하지 않는 것 같습니다.

이 코드를 $table_prefix줄 주위의 wp-config에 삽입하려고했습니다 .

define('CUSTOM_USER_TABLE', 'wp_users');
define('CUSTOM_USER_META_TABLE', 'wp_usermeta');

간단히 말해서, 관리 측의 두 번째 사이트에 전혀 로그인 할 수 없어서이 트릭이 더 이상 작동하지 않는다고 생각합니다.

이 데이터를 연결하는 가장 좋은 방법은 무엇입니까?


1
나는하지 않는 이유 CUSTOM_USER_TABLE것없는 일 ... 참조 여기에 뭔가가 있다면 : wordpress.stackexchange.com/search?q=CUSTOM_USER_TABLE
brasofilo

CUSTOM_USER_TABLE을 사용하면 웹 사이트간에 사용자가 공유되지만 두 번째 웹 사이트에서는 관리자로 로그인 할 수 없습니다. 몇 시간 동안 주변을 검색하고 2 ~ 7 년 된 플러그인과 기사를 찾으면이 트릭이 더 이상 3.5.1에서 작동하지 않는다고 믿게됩니다.
Ian

문제는 이것이 속임수 가 아니라 핵심 기능이라는 것 입니다. 버그 가보고 된 적이 없으며 [wp-hackers] 목록에 관련 항목이 표시 되지 않습니다 ...
brasofilo

귀하의 의견에 감사드립니다. 나는 당신의 링크에서 본 것들을 자세히 살펴봄으로써 답을 찾을 수있었습니다. 내 솔루션을 아래에 게시했습니다. 다시 한번 감사합니다 @brasofilo
Ian

사용자를 공유하는 방법에 대한 모든 방법을 거의 다 다루었습니다. 여기 조금 다른 상황이 있습니다. 각 특정 웹 사이트에 고유 한 db가있는 5 Wordpress 웹 사이트. 새로운 사용자가 5 개의 웹 사이트 중 하나에 등록 할 때 솔루션을 사용하여 별도의 모든 사용자 테이블을 연결하려면 어떻게하면 단일 등록을 사용하여 다른 웹 사이트에 즉시 로그인 할 수 있습니까? WPMU를 사용하여 단일 데이터베이스에서이를 수행 할 수있는 방법을 알고 있지만 별도의 워드 프레스 설치에서이를 수행하는 방법을 찾지 못했습니다. 도움이 필요합니다. 감사합니다

답변:


8

좋아, 우선, 나는 바보 같은 느낌이 들지만, 내 방어에는 이것에 대해 이야기하는 대부분의 기사 가이 작품을 만드는 데 매우 중요한 세부 사항을 언급하지는 않지만. 답은 데이터베이스에서 하나 이상의 관리자에 대한 권한을 설정해야한다는 것입니다. 이 정보는 Codex에서 찾을 수 있습니다 : http://codex.wordpress.org/Editing_wp-config.php#Custom_User_and_Usermeta_Tables

wp-config.php 파일을 설정 한 후에는 마스터 usermeta 테이블 (내 경우에는 wp_usermeta) 필드 wp_capabilities 행과 meta_value 열을 변경해야합니다. phpMyAdmin을 통해이를 수행하십시오.

참고 : 한 명 이상의 사용자 관리자가 로그인 할 때이 작업을 수행하십시오. 일단 로그인하면 백엔드에서 다른 모든 사용자 / 관리자 역할을 조정할 수 있습니다.

어떤 사용자 권한이 변경 될 것인지의 스크린 샷

작성된 각 웹 사이트마다 새 사용자 사이트 접두어에 관리자 역할이 할당되어 있어야합니다.

필자의 경우 현재 2 사이트에서만 작동하는 것으로 보이므로 다음과 같습니다.

a:1:{s:13:"administrator";s:1:"1";}
tbs_capabilities = a:1:{s:13:"administrator";s:1:"1";}

wp_usermeta value의 스크린 샷

첫 번째 줄은 기본 테이블 접두사 (이 경우 wp_)에 대한 권한을 설정하고 두 번째 줄은 두 번째 웹 사이트 (이 경우 tbs_ 접두사)에 대한 권한을 설정합니다.

내 문제를 마침내 해결하기 위해 조금 더 파고 들었다는 의견에 대한 brasofilo에게 감사드립니다!

이 답변이 내가했던 것과 동일한 문제를 겪고있는 다른 사람들을 도울 수 있기를 바랍니다.


이 기능을 사용하지는 않았지만이 작은 트릭이 작동한다는 것을 알게되어 기쁩니다.) 멋진 글쓰기 +1
brasofilo

1
고마워요, 튜토리얼에서 분명히 언급해야합니다!
Mircea Sandu

2

wp_users와 wp_meta를 공유 할 때 또 다른 문제점이 있습니다. 다른 워드 프레스 설치는 사용자를 인식하지만 다른 웹 사이트에서 오는 사용자의 역할은 인식하지 못합니다 . 역할이 정의되지 않은 것으로 표시됩니다.

따라서 필요에 따라 wp-config.php를 편집했습니다.

define('CUSTOM_USER_TABLE', 'someprefix_users');
define('CUSTOM_USER_META_TABLE', 'someprefix_usermeta');

db를 다루지 않고 가장 쉬운 방법은 wp internals를 사용하는 것입니다. 로그인하면 역할을 할당 할 수 있습니다. 예를 들어, 모든 사람에 대한 기고자 역할과 사용자 'superman'에 대한 관리자 역할이 필요합니다.

function check_user_role($user_login, $user) {
  if ( $user_login == 'superman' ) {
     $user->add_role('administrator');
     } else {
     $user->add_role('contributor');
  }
}

// the action fired on login
add_action('wp_login', 'check_user_role', 10, 2);

따라서 초기 웹 사이트에서 오는 사용자는 로그인 할 때 할당 된 '기여자'역할을 갖습니다.

  • 관리자로 로그인 한 후 사용자 확인을 삭제할 수 있습니다.
  • 사용자는 둘 이상의 역할과 기능을 가질 수 있습니다.

http://codex.wordpress.org/Class_Reference/WP_User


0

새 행을 만들어야했습니다.

meta_key='tbs_capabilities' meta_value='a:1:{s:13:"administrator";b:1;}'

그리고 user_id=1. 설명하신 방법이 작동하지 않았습니다.


1
위의 답변에서 "tbs"는 내가 설치 한 두 번째 WordPress 웹 사이트의 접두사입니다. 따라서 테이블이 wp_posts 대신 tbs_posts가됩니다. 명시 적으로 설정하지 않는 한 $ table_prefix = 'tbs_'; 작동하지 않습니다.
Ian
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.