it-swarm.com.de

Was ist der beste Weg, um Benutzerdaten über mehrere Wordpress-Websites zu teilen?

Erstens ist Multisite nicht das, wonach ich suche. Ich habe 5 Websites mit Wordpress, die sich alle auf separaten Domänen befinden, für die ich Benutzerkonten aktivieren möchte. Ich möchte, dass Benutzerdaten im gesamten Netzwerk geteilt werden. Wenn ein Benutzer ein Konto erstellt, hat er sofortigen Zugriff auf alle anderen Websites. Was ich versuche, wird von Wordpress bei Verwendung von Multisite nicht empfohlen:

Wenn Sie Websites erstellen möchten, die stark miteinander verbunden sind, Daten gemeinsam nutzen oder Benutzer gemeinsam nutzen, ist ein Netzwerk mit mehreren Standorten möglicherweise nicht die beste Lösung. - http://codex.wordpress.org/Before_You_Create_A_Network (1. Absatz, 3. Satz)

Ich habe versucht, den "Shared User Table Trick" zu verwenden, der hier http://wordpress.org/support/topic/multiple-sites-same-users-how und hier http: // xentek genannt wird. net/articles/528/den-wordpress-shared-users-table-trick-implementieren/ und viele andere orte ... das problem ist, dass diese information 2-7 jahre alt ist und ich Wordpress 3.5 verwende .1 und dieser "Trick" scheint nicht zu funktionieren.

Ich habe versucht, diesen Code in wp-config um die Zeile $table_prefix einzufügen.

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

Um es kurz zu machen, ich glaube nicht, dass dieser Trick mehr funktioniert, da ich mich überhaupt nicht mehr bei der zweiten Site auf der Admin-Seite anmelden kann.

Irgendwelche Vorschläge, wie diese Daten am besten verknüpft werden könnten?

9
Ian

Ok, ich fühle mich zuallererst wie ein Idiot, obwohl zu meiner Verteidigung die meisten Artikel, die darüber sprechen, kein sehr wichtiges Detail erwähnen, um diese Arbeit zu machen. Die Antwort ist, dass Sie die Berechtigung für mindestens einen Administrator in der Datenbank festlegen müssen. Diese Informationen finden Sie im Codex hier: http://codex.wordpress.org/Editing_wp-config.php#Custom_User_and_Usermeta_Tables

Nachdem Sie die Datei wp-config.php eingerichtet haben, müssen Sie unbedingt Änderungen an den Feldern wp_capabilities der master-usermeta-Tabelle (in meinem Fall wp_usermeta) und meta_value vornehmen. Tun Sie dies über phpMyAdmin.

Hinweis: Führen Sie dies aus, damit sich mindestens ein Benutzeradministrator anmeldet. Sie können alle anderen Benutzer-/Administratorrollen über das Backend anpassen, sobald Sie angemeldet sind.

Screenshot of what users permissions will be changed

Für jede erstellte Website muss dem Präfix für neue Websites die Administrator-Benutzerrolle zugewiesen werden.

In meinem Fall sieht es so aus, da ich momentan nur auf 2 Sites arbeite:

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

Screenshot of wp_usermeta value

In der ersten Zeile werden die Berechtigungen für das Standardtabellenpräfix (in diesem Fall wp_) und in der zweiten Zeile die Berechtigungen für die zweite Website (in diesem Fall mit dem Präfix tbs_) festgelegt.

Vielen Dank an brasofilo für den Kommentar, der mich zu Dig geführt hat, um endlich mein Problem zu lösen!

Ich hoffe, dass diese Antwort anderen helfen kann, die das gleiche Problem hatten wie ich.

8
Ian

Bei der Freigabe von wp_users und wp_meta gibt es ein anderes Problem. Bei einer anderen WordPress-Installation werden die Benutzer zwar erkannt, aber es werden nicht die Rollen von Benutzern erkannt, die von der anderen Website stammen . Die Rolle wird als undefiniert angezeigt.

Also haben Sie Ihre wp-config.php nach Bedarf bearbeitet:

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

Ich denke, der einfachste Weg, dies zu tun, ohne an der Datenbank herumzubasteln, ist die Verwendung von WP-Interna. Bei der Anmeldung ist es möglich, eine Rolle zuzuweisen. Nehmen wir an, wir brauchen die Mitwirkendenrolle für alle und die Administratorrolle für den Benutzer "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);

Benutzern, die von der ursprünglichen Website kommen, wird bei der Anmeldung die Rolle "Contributor" zugewiesen.

  • Sie können die Benutzerüberprüfung löschen, nachdem Sie mit dem Administratorbenutzer angemeldet wurden.
  • Benutzer können mehr als eine Rolle haben, Fähigkeiten sind wichtig.

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

2
cenk

Ich musste eine neue Zeile erstellen:

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

und user_id=1. Die von Ihnen beschriebene Methode hat nicht funktioniert.

0
James Smith