Qual è il modo migliore per condividere i dati degli utenti su più siti Web Wordpress?


10

Prima di tutto, Multisite non è quello che sto cercando. Ho 5 siti Web che usano Wordpress tutti su domini separati per i quali vorrei abilitare gli account utente. Ho bisogno che i dati dell'utente vengano condivisi su tutta la rete e quando un utente crea un account, avrebbe accesso immediato anche a tutti gli altri siti Web. Quello che sto cercando di fare non è raccomandato da Wordpress quando si utilizza Multisite:

Se si prevede di creare siti fortemente interconnessi, che condividono dati o condividono utenti, una rete multisito potrebbe non essere la soluzione migliore. - http://codex.wordpress.org/Before_You_Create_A_Network (1o paragrafo, 3a frase)

Ho provato a usare il "trucco della tabella degli utenti condivisi" come menzionato qui http://wordpress.org/support/topic/multiple-sites-same-users-how e qui http://xentek.net/articles/528/ implementazione-the-wordpress-shared-users-table-trick / e un numero di altri posti ... il problema è che questa informazione ha 2-7 anni e sto usando Wordpress 3.5.1 e questo "trucco" non lo fa sembra funzionare.

Ho provato a inserire questo codice in wp-config attorno alla $table_prefixlinea.

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

Per farla breve, non credo che questo trucco funzioni più perché non riesco ad accedere al secondo sito sul lato amministratore.

Qualche suggerimento su quale sarebbe il modo migliore per collegare questi dati?


1
Non capisco perché CUSTOM_USER_TABLEnon funzionerebbe ... Vedi se c'è qualcosa qui: wordpress.stackexchange.com/search?q=CUSTOM_USER_TABLE
brasofilo,

Quando utilizzo CUSTOM_USER_TABLE gli utenti vengono condivisi tra i siti Web, tuttavia, sul secondo sito Web, non riesco ad accedere come amministratore. Cercare per ore e trovare plugin e articoli di 2-7 anni mi porta a credere che questo trucco non funziona più in 3.5.1 ...
Ian

La domanda è che questo non è un trucco , è una caratteristica fondamentale . Sembra che non sia stato segnalato alcun bug e che non
venga

Grazie per i tuoi commenti Sono stato in grado di trovare la risposta dando uno sguardo più approfondito ad alcune cose che ho visto nei tuoi link. Ho pubblicato la mia soluzione di seguito. Grazie ancora @brasofilo
Ian

Davvero fantastico, hai quasi coperto tutti i modi su come condividere gli utenti. ma ho una situazione un po 'diversa qui. Ive 5 wordpress website che ogni particolare sito web ha il suo db. Come posso utilizzare la soluzione per connettere tutte le tabelle utente separate in un modo in cui un nuovo utente si registra su uno dei 5 siti Web, può accedere immediatamente a uno qualsiasi degli altri siti Web utilizzando un'unica registrazione? Sono a conoscenza di un modo per ottenere questo risultato in un unico database utilizzando WPMU, ma non trovo davvero alcun modo per farlo su installazioni separate di wordpress. Apprezzerà qualsiasi aiuto. Grazie

Risposte:


8

Ok, prima di tutto, mi sento un idiota, anche se a mia difesa la maggior parte degli articoli che parlano di questo non menziona un dettaglio molto cruciale nel rendere questo lavoro. La risposta è che è necessario impostare l'autorizzazione per almeno un amministratore nel database. Queste informazioni sono disponibili nel Codice qui: http://codex.wordpress.org/Editing_wp-config.php#Custom_User_and_Usermeta_Tables

Dopo aver impostato il file wp-config.php, è indispensabile apportare una modifica al campo della tabella usermeta principale (nel mio caso wp_usermeta) riga wp_capabilities e colonna meta_value. Fallo tramite phpMyAdmin.

Nota: eseguire questa operazione affinché almeno un amministratore utente acceda. È possibile regolare tutti gli altri ruoli utente / amministratore dal back-end una volta effettuato l'accesso.

Schermata delle autorizzazioni degli utenti modificate

Per ogni sito Web creato, deve essere assegnato a quel nuovo prefisso siti il ​​ruolo di utente amministratore.

Nel mio caso da quando ho funzionato solo su 2 siti al momento sembra così:

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

Schermata del valore di wp_usermeta

La prima riga imposta le autorizzazioni per il prefisso di tabella predefinito (in questo caso wp_) e la seconda riga imposta le autorizzazioni per il secondo sito Web (in questo caso con il prefisso tbs_).

Grazie a brasofilo per il commento che mi ha indicato di approfondire un po 'per risolvere finalmente il mio problema!

Spero che questa risposta possa aiutare chi ha avuto lo stesso problema.


Non ho mai usato questa funzione, ma sono felice di sapere che esiste un piccolo trucco per farlo funzionare;) Nice write-up +1
brasofilo,

1
grazie, questo dovrebbe sicuramente essere menzionato nei tutorial!
Mircea Sandu,

2

Quando si condividono wp_users e wp_meta c'è un altro problema, un'altra installazione di wordpress riconosce gli utenti ma non riconosce i ruoli degli utenti provenienti dall'altro sito Web . Il ruolo viene visualizzato come non definito.

Quindi, hai modificato il tuo wp-config.php come richiesto:

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

Penso che il modo più semplice per farlo, senza armeggiare con il db, sia usare wp internals. All'accesso è possibile assegnare un ruolo. Diciamo, abbiamo bisogno del ruolo di collaboratore per tutti e del ruolo di amministratore per l'utente "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);

Pertanto, gli utenti che provengono dal sito Web iniziale ottengono il ruolo di "collaboratore" assegnato quando effettuano l'accesso.

  • È possibile eliminare il controllo utente dopo aver effettuato l'accesso con l'utente admin.
  • Gli utenti possono avere più di un ruolo, le funzionalità contano.

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


0

Ho dovuto creare una nuova riga:

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

e user_id=1. Il metodo che hai descritto non ha funzionato.


1
Nella risposta sopra "tbs" è il prefisso del secondo sito Web WordPress che ho installato. Quindi invece di essere wp_posts la tabella sarebbe tbs_posts. A meno che tu non abbia impostato esplicitamente $ table_prefix = 'tbs_'; non funzionerà.
Ian,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.