Apa cara terbaik untuk berbagi data pengguna di beberapa situs web Wordpress?

10

Pertama-tama, Multisite bukan yang saya cari. Saya memiliki 5 situs web yang menggunakan Wordpress semua di domain terpisah yang ingin saya aktifkan untuk akun pengguna. Saya perlu data pengguna untuk dibagikan di seluruh jaringan dan ketika pengguna membuat akun, mereka akan memiliki akses instan ke semua situs web lain juga. Apa yang saya coba lakukan tidak direkomendasikan oleh Wordpress saat menggunakan Multisite:

Jika Anda berencana membuat situs yang sangat terhubung satu sama lain, yang berbagi data, atau berbagi pengguna, maka jaringan multisite mungkin bukan solusi terbaik. - http://codex.wordpress.org/Before_You_Create_A_Network (paragraf 1, kalimat ke-3)

Saya sudah mencoba menggunakan "trik tabel pengguna bersama" seperti yang disebutkan di sini http://wordpress.org/support/topic/multiple-sites-same-users-how dan di sini http://xentek.net/articles/528/ mengimplementasikan-the-wordpress-shared-users-table-trick / dan sejumlah tempat lain ... masalahnya adalah bahwa informasi ini berusia 2-7 tahun dan saya menggunakan Wordpress 3.5.1 dan "trik" ini tidak sepertinya berhasil.

Saya telah mencoba memasukkan kode ini ke wp-config di sekitar $table_prefixbaris.

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

Singkatnya, saya rasa trik ini tidak berfungsi lagi karena saya tidak dapat masuk ke situs kedua di sisi admin sama sekali.

Adakah saran tentang cara terbaik untuk menautkan data ini?

Ian
sumber
1
Saya tidak mengerti mengapa CUSTOM_USER_TABLEtidak bekerja ... Lihat apakah ada sesuatu di sini: wordpress.stackexchange.com/search?q=CUSTOM_USER_TABLE
brasofilo
Ketika saya menggunakan CUSTOM_USER_TABLE pengguna dapat dibagikan di antara situs web, namun, di situs web kedua, saya tidak dapat masuk sebagai admin sama sekali. Mencari-cari berjam-jam dan menemukan plugin dan artikel yang berusia 2-7 tahun membuat saya percaya bahwa trik ini tidak lagi berfungsi di 3.5.1 ...
Ian
Pertanyaannya adalah ini bukan tipuan , ini fitur inti . Tampaknya tidak ada bug yang dilaporkan, dan tidak ada yang relevan muncul di daftar [wp-hacker] ...
brasofilo
Terima kasih atas komentar anda Saya dapat menemukan jawabannya dengan melihat lebih dalam beberapa hal yang saya lihat di tautan Anda. Saya telah memposting solusi saya di bawah ini. Terima kasih lagi @brasofilo
Ian
Sungguh luar biasa Anda hampir membahas semua cara tentang cara berbagi pengguna. tapi ive situasi yang sedikit berbeda di sini. Ive 5 situs web wordpress bahwa setiap situs web tertentu memiliki db sendiri. Bagaimana saya bisa menggunakan solusi Anda untuk menghubungkan semua tabel pengguna yang terpisah dengan cara ketika pengguna baru mendaftar di salah satu dari 5 situs web, ia bisa langsung masuk ke situs web lain menggunakan satu pendaftaran? Saya menyadari beberapa cara untuk mencapai ini dalam satu database menggunakan WPMU tetapi saya tidak benar-benar menemukan cara untuk melakukannya pada instalasi terpisah dari wordpress. Akan appriciate bantuan apa pun. Terima kasih

Jawaban:

8

Ok, pertama-tama, saya merasa seperti orang idiot, walaupun dalam pembelaan saya sebagian besar artikel yang berbicara tentang ini tidak menyebutkan detail yang sangat penting dalam membuat pekerjaan ini. Jawabannya adalah Anda harus menetapkan izin untuk setidaknya satu admin di database. Info ini dapat ditemukan di Codex di sini: http://codex.wordpress.org/Editing_wp-config.php#Custom_User_and_Usermeta_Tables

Setelah Anda mengatur file wp-config.php, Anda harus melakukan perubahan pada tabel usermeta master (dalam kasus saya wp_usermeta) bidang wp_capabilities baris, dan kolom meta_value. Lakukan ini melalui phpMyAdmin.

Catatan: Lakukan ini untuk setidaknya satu admin pengguna untuk masuk. Anda dapat menyesuaikan semua peran pengguna / admin lainnya dari backend setelah Anda masuk.

Cuplikan layar dari apa hak pengguna akan diubah

Untuk setiap situs web yang dibuat, harus ada awalan situs baru yang ditetapkan peran pengguna admin.

Dalam kasus saya karena saya hanya menjalankan ini di 2 situs saat ini terlihat seperti ini:

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

Cuplikan layar nilai wp_usermeta

Baris pertama menetapkan izin untuk awalan tabel default (dalam hal ini wp_), dan baris kedua menetapkan izin untuk situs web kedua (dalam hal ini dengan awalan tbs_).

Terima kasih kepada brasofilo untuk komentar yang mengarahkan saya untuk menggali sedikit lebih jauh untuk akhirnya menyelesaikan masalah saya!

Saya harap jawaban ini dapat membantu orang lain yang memiliki masalah yang sama dengan saya.

Ian
sumber
Tidak pernah menggunakan fitur ini, tetapi senang mengetahui bahwa ada sedikit trik ini untuk membuatnya bekerja;)
Tulisan yang bagus
1
terima kasih, ini pasti harus disebutkan dalam tutorial!
Mircea Sandu
2

Saat berbagi wp_users dan wp_meta ada masalah lain, instalasi wordpress lain memang mengenali pengguna tetapi tidak mengenali peran pengguna yang berasal dari situs web lain . Peran muncul sebagai tidak terdefinisi.

Jadi, Anda mengedit wp-config.php sesuai kebutuhan:

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

Saya pikir cara termudah untuk melakukan ini, tanpa bermain-main dengan db, adalah dengan menggunakan wp internal. Setelah masuk, dimungkinkan untuk menetapkan peran. Katakanlah, kita membutuhkan peran kontributor untuk semua orang, dan peran administrator untuk pengguna '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);

Jadi, pengguna yang berasal dari situs web awal mendapatkan peran 'kontributor' yang ditugaskan saat mereka masuk.

  • Anda dapat menghapus cek pengguna setelah Anda masuk dengan pengguna admin.
  • Pengguna mungkin memiliki lebih dari satu peran, kemampuan penting.

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

cenk
sumber
0

Saya harus membuat baris baru:

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

dan user_id=1. Metode yang Anda jelaskan tidak berfungsi.

James Smith
sumber
1
Dalam jawaban di atas "tbs" adalah awalan dari situs WordPress kedua yang saya instal. Jadi alih-alih tabel menjadi wp_posts, mereka akan menjadi tbs_posts. Kecuali jika Anda menetapkan $ table_prefix = 'tbs_' secara eksplisit; itu tidak akan berhasil.
Ian