Po pierwsze, Multisite nie jest tym, czego szukam. Mam 5 stron internetowych korzystających z Wordpress, wszystkie w osobnych domenach, dla których chciałbym włączyć konta użytkowników. Potrzebuję, aby dane użytkownika były udostępniane w całej sieci, a kiedy użytkownik utworzy konto, będzie miał natychmiastowy dostęp do wszystkich innych stron internetowych. To, co próbuję zrobić, nie jest zalecane przez Wordpress podczas korzystania z Multisite:
Jeśli planujesz tworzyć witryny, które są ze sobą ściśle powiązane, współużytkują dane lub współużytkują użytkowników, sieć wielostanowiskowa może nie być najlepszym rozwiązaniem. - http://codex.wordpress.org/Before_You_Create_A_Network (pierwszy akapit, trzecie zdanie)
Próbowałem użyć „sztuczki udostępnionej tabeli użytkowników”, jak wspomniano tutaj http://wordpress.org/support/topic/multiple-sites-same-users-how i tutaj http://xentek.net/articles/528/ implementowanie sztuczki-wordpress-shared-users-table-trick / i wielu innych miejsc ... problem polega na tym, że ta informacja ma 2-7 lat i używam Wordpress 3.5.1, a ta „sztuczka” nie wydaje się, że działa.
Próbowałem wstawić ten kod do wp-config wokół $table_prefix
linii.
define('CUSTOM_USER_TABLE', 'wp_users');
define('CUSTOM_USER_META_TABLE', 'wp_usermeta');
Krótko mówiąc, nie sądzę, że ta sztuczka już działa, ponieważ nie jestem w stanie zalogować się na drugiej stronie po stronie administratora.
Wszelkie sugestie dotyczące najlepszego sposobu połączenia tych danych?
CUSTOM_USER_TABLE
nie miałbym działać ... Sprawdź, czy coś tu jest: wordpress.stackexchange.com/search?q=CUSTOM_USER_TABLEOdpowiedzi:
Ok, po pierwsze czuję się jak idiota, chociaż w mojej obronie większość artykułów na ten temat nie wspomina o bardzo ważnym szczególe w tworzeniu tej pracy. Odpowiedź brzmi: musisz ustawić uprawnienia dla przynajmniej jednego administratora w bazie danych. Informacje te można znaleźć w Kodeksie tutaj: http://codex.wordpress.org/Editing_wp-config.php#Custom_User_and_Usermeta_Tables
Po skonfigurowaniu pliku wp-config.php konieczne jest dokonanie zmiany w głównej tabeli usermeta (w moim przypadku wp_usermeta) w wierszu wp_capabilities i kolumnie meta_value. Zrób to za pośrednictwem phpMyAdmin.
Uwaga: Zrób to, aby zalogować się co najmniej jeden administrator użytkownika. Po zalogowaniu możesz dostosować wszystkie inne role użytkowników / administratorów z zaplecza.
Dla każdej tworzonej witryny musi mieć przypisany nowy prefiks witryn do roli administratora.
W moim przypadku, ponieważ mam to działa tylko na 2 stronach w tej chwili, wygląda to tak:
Pierwszy wiersz ustawia uprawnienia dla domyślnego prefiksu tabeli (w tym przypadku wp_), a drugi wiersz ustawia uprawnienia dla drugiej strony internetowej (w tym przypadku z prefiksem tbs_).
Dzięki brasofilo za komentarz, który skłonił mnie do głębszego wykopania, aby w końcu rozwiązać mój problem!
Mam nadzieję, że ta odpowiedź może pomóc innym, którzy mieli ten sam problem, co ja.
źródło
Podczas udostępniania wp_users i wp_meta jest inny problem, inna instalacja wordpress rozpoznaje użytkowników, ale nie rozpoznaje ról użytkowników pochodzących z innej strony . Rola pojawia się jako niezdefiniowana.
Więc zmodyfikowałeś swój wp-config.php zgodnie z wymaganiami:
Myślę, że najłatwiejszym sposobem na to, bez majsterkowania przy db, jest użycie wewnętrznych elementów wp. Po zalogowaniu można przypisać rolę. Powiedzmy, że potrzebujemy roli współtwórcy dla wszystkich oraz roli administratora dla użytkownika „superman”.
Tak więc użytkownicy pochodzący z początkowej strony internetowej otrzymują rolę „współtwórcy” podczas logowania.
http://codex.wordpress.org/Class_Reference/WP_User
źródło
Musiałem utworzyć nowy wiersz:
meta_key='tbs_capabilities' meta_value='a:1:{s:13:"administrator";b:1;}'
a
user_id=1
. Opisana metoda nie zadziałała.źródło