Qual é a melhor maneira de compartilhar dados do usuário em vários sites do Wordpress?

9

Primeiro de tudo, o Multisite não é o que eu estou procurando. Eu tenho 5 sites usando Wordpress todos em domínios separados que eu gostaria de habilitar as contas de usuário para. Preciso que os dados do usuário sejam compartilhados em toda a rede e, quando um usuário cria uma conta, eles também teriam acesso instantâneo a todos os outros sites. O que estou tentando fazer não é recomendado pelo Wordpress ao usar o Multisite:

  

Se você planeja criar sites strongmente interconectados, que compartilham dados ou compartilham usuários, uma rede com vários sites pode não ser a melhor solução.   - enlace (1º parágrafo, terceira frase)

Eu tentei usar o "truque da tabela de usuários compartilhados" como mencionado aqui enlace e aqui enlace e vários outros lugares ... O problema é que esta informação tem 2-7 anos e estou usando o Wordpress 3.5.1 e este "truque" parece não funcionar.

Eu tentei inserir este código em wp-config em torno da linha $table_prefix .

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

Para encurtar a história, não acho que esse truque funcione mais, já que não consigo fazer login no segundo site do lado administrativo.

Alguma sugestão sobre qual seria a melhor maneira de vincular esses dados?

    
por Ian 12.02.2013 / 00:36

3 respostas

8
Ok, em primeiro lugar, eu me sinto um idiota, embora em minha defesa a maioria dos artigos que falam sobre isso não mencionam um detalhe crucial em fazer este trabalho. A resposta é que você precisa definir permissão para pelo menos um administrador no banco de dados. Esta informação pode ser encontrada no Codex aqui: enlace

Depois de configurar o arquivo wp-config.php, é imperativo que você faça uma alteração na tabela mastermeta table (no meu caso wp_usermeta) wp_capabilities row e meta_value column. Faça isso via phpMyAdmin.

Observação: faça isso para que pelo menos um usuário administrador faça o login. Você pode ajustar todos os outros usuários / funções administrativas do back-end assim que chegar.

Paracadawebsitecriado,énecessárioqueonovoprefixodesitessejaatribuídoàfunçãodeusuárioadministrativo.

Nomeucaso,desdequeeusótenhoissotrabalhandoemdoissitesnomomento,pareceassim:

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

A primeira linha define as permissões para o prefixo da tabela padrão (neste caso, wp_), e a segunda linha define as permissões para o segundo site (neste caso, com o prefixo tbs_).

Obrigado ao brasofilo pelo comentário que me apontou para cavar um pouco mais para finalmente resolver meu problema!

Espero que essa resposta possa ajudar outras pessoas que estavam tendo o mesmo problema que eu.

    
por Ian 12.02.2013 / 08:22
2

Ao compartilhar wp_users e wp_meta, há outro problema, outra instalação do wordpress reconhece os usuários, mas não reconhece as funções dos usuários provenientes do outro site . O papel aparece como indefinido.

Então, você editou seu wp-config.php conforme necessário:

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

Eu acho que a maneira mais fácil de fazer isso, sem mexer no db, é usando internals wp. Após o login, é possível atribuir uma função. Digamos que precisamos da função de colaborador para todos e da função de administrador para o usuário '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);

Assim, os usuários que vêm do site inicial recebem a função de 'contribuidor' atribuída quando fazem login.

  • Você pode excluir a verificação do usuário depois de ter feito o login com o usuário admin.
  • Os usuários podem ter mais de um papel, os recursos são importantes.

enlace

    
por cenk 24.02.2015 / 02:58
0

Eu tive que criar uma nova linha:

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

e user_id=1 . O método que você descreveu não funcionou.

    
por James Smith 02.06.2014 / 05:59