Cách tốt nhất để chia sẻ dữ liệu người dùng trên nhiều trang web Wordpress là gì?


10

Trước hết, Multisite không phải là thứ tôi đang tìm kiếm. Tôi có 5 trang web sử dụng Wordpress tất cả trên các tên miền riêng biệt mà tôi muốn kích hoạt tài khoản người dùng. Tôi cần dữ liệu người dùng được chia sẻ trên toàn bộ mạng và khi người dùng tạo tài khoản, họ cũng sẽ có quyền truy cập ngay vào tất cả các trang web khác. Những gì tôi đang cố gắng không được Wordpress khuyên dùng khi sử dụng Multisite:

Nếu bạn có kế hoạch tạo các trang web được liên kết chặt chẽ, chia sẻ dữ liệu hoặc chia sẻ người dùng, thì mạng nhiều trang có thể không phải là giải pháp tốt nhất. - http://codex.wordpress.org/B Before_You_Create_A_Network (đoạn 1, câu 3)

Tôi đã thử sử dụng "thủ thuật chia sẻ bảng người dùng" như được đề cập ở đây http://wordpress.org/support/topic/mult Môn-sites-same- users- how và tại đây http://xentek.net/articles/528/ triển khai-the-wordpress-shared-users-table-trick / và một số nơi khác ... vấn đề là thông tin này đã 2-7 tuổi và tôi đang sử dụng Wordpress 3.5.1 và "mẹo" này không dường như làm việc

Tôi đã cố gắng chèn mã này vào wp-config xung quanh $table_prefixdòng.

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

Tóm lại, tôi không nghĩ thủ thuật này hoạt động được nữa vì tôi không thể đăng nhập vào trang web thứ hai ở phía quản trị viên.

Bất kỳ đề xuất về cách tốt nhất để liên kết dữ liệu này sẽ là gì?


1
Tôi không hiểu tại sao CUSTOM_USER_TABLEkhông hoạt động ... Xem nếu có gì đó ở đây: wordpress.stackexchange.com/search?q=CUSTOM_USER_TABLE
brasofilo

Khi tôi sử dụng CUSTOM_USER_TABLE, người dùng sẽ được chia sẻ giữa các trang web, tuy nhiên, trên trang web thứ hai, tôi không thể đăng nhập với tư cách quản trị viên. Tìm kiếm trong nhiều giờ và tìm kiếm các plugin và bài viết đã 2-7 tuổi khiến tôi tin rằng thủ thuật này không còn hoạt động trong 3.5.1 ...
Ian

Câu hỏi đặt ra là đây không phải là một mẹo , đây là một tính năng cốt lõi . Có vẻ như không có lỗi nào được báo cáo và không có gì liên quan xuất hiện trong danh sách [wp-hacker] ...
brasofilo

Cảm ơn ý kiến ​​của bạn. Tôi đã có thể tìm thấy câu trả lời bằng cách nhìn sâu hơn vào một số điều mà tôi thấy trong các liên kết của bạn. Tôi đã đăng giải pháp của tôi dưới đây. Cảm ơn một lần nữa @brasofilo
Ian

Thực sự tuyệt vời, bạn gần như bao quát tất cả các cách về cách chia sẻ người dùng. nhưng tôi có một chút tình huống khác nhau ở đây. Trang web Ive 5 wordpress mà mỗi trang web cụ thể có db riêng. Làm cách nào tôi có thể sử dụng giải pháp của bạn để kết nối tất cả các bảng người dùng riêng biệt theo cách khi người dùng mới đăng ký trên bất kỳ 5 trang web nào, anh ta có thể đăng nhập ngay lập tức vào bất kỳ trang web nào khác bằng một lần đăng ký? Tôi biết một số cách để thực hiện điều này trong một cơ sở dữ liệu bằng cách sử dụng WPMU nhưng tôi không thực sự tìm thấy bất kỳ cách nào để thực hiện việc cài đặt wordpress riêng biệt. Sẽ đánh giá cao bất kỳ sự giúp đỡ. Cảm ơn bạn

Câu trả lời:


8

Ok, trước hết, tôi cảm thấy như một thằng ngốc, mặc dù trong phần bảo vệ của tôi, hầu hết các bài báo nói về điều này không đề cập đến một chi tiết rất quan trọng trong việc làm cho tác phẩm này. Câu trả lời là bạn cần đặt quyền cho ít nhất một quản trị viên trong cơ sở dữ liệu. Thông tin này có thể được tìm thấy trong Codex tại đây: http://codex.wordpress.org/Editing_wp-config.php#Custom_User_and_Usermeta_Tables

Sau khi bạn thiết lập tệp wp-config.php, bắt buộc bạn phải thay đổi bảng usermeta chính (trong trường hợp của tôi là wp_usermeta) hàng wp_capabilities và cột meta_value. Làm điều này thông qua phpMyAdmin.

Lưu ý: Thực hiện việc này cho ít nhất một quản trị viên người dùng để đăng nhập. Bạn có thể điều chỉnh tất cả các vai trò người dùng / quản trị viên khác từ phụ trợ sau khi bạn đăng nhập.

Ảnh chụp màn hình về những gì người dùng sẽ được thay đổi

Đối với mỗi trang web được tạo, nó cần phải có tiền tố trang web mới được gán vai trò người dùng quản trị viên.

Trong trường hợp của tôi vì tôi chỉ làm việc này trên 2 trang web vào lúc này, nó trông như thế này:

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

Ảnh chụp màn hình giá trị wp_usermeta

Dòng đầu tiên đặt quyền cho tiền tố bảng mặc định (trong trường hợp này là wp_) và dòng thứ hai đặt quyền cho trang web thứ hai (trong trường hợp này là tiền tố tbs_).

Cảm ơn brasofilo vì bình luận đã chỉ cho tôi đào sâu thêm một chút để cuối cùng giải quyết vấn đề của mình!

Tôi hy vọng rằng câu trả lời này có thể giúp những người khác có cùng vấn đề với tôi.


Không bao giờ sử dụng tính năng này, nhưng vui mừng khi biết rằng có một mẹo nhỏ này để làm cho nó hoạt động;) Bài viết hay +1
brasofilo

1
cảm ơn bạn, điều này chắc chắn nên được đề cập trong các hướng dẫn!
Mircea Sandu

2

Khi chia sẻ wp_users và wp_meta, có một vấn đề khác, cài đặt wordpress khác nhận ra người dùng nhưng nó không nhận ra vai trò của người dùng đến từ trang web khác . Vai trò hiển thị là không xác định.

Vì vậy, bạn đã chỉnh sửa wp-config.php của mình theo yêu cầu:

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

Tôi nghĩ cách dễ nhất để làm điều này, mà không cần mày mò với db, là sử dụng nội bộ wp. Khi đăng nhập, có thể chỉ định một vai trò. Giả sử, chúng ta cần vai trò đóng góp cho mọi người và vai trò quản trị viên cho 'siêu nhân' của người dùng.

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);

Vì vậy, người dùng đến từ trang web ban đầu được gán vai trò 'người đóng góp' khi họ đăng nhập.

  • Bạn có thể xóa kiểm tra người dùng sau khi bạn đã đăng nhập với người dùng quản trị viên.
  • Người dùng có thể có nhiều hơn một vai trò, khả năng quan trọng.

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


0

Tôi đã phải tạo một hàng mới:

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

user_id=1. Phương pháp bạn mô tả không hiệu quả.


1
Trong câu trả lời ở trên, "tbs" là tiền tố của trang web WordPress thứ hai tôi đã cài đặt. Vì vậy, thay vì bảng là wp_posts, chúng sẽ là tbs_posts. Trừ khi bạn đặt rõ ràng $ table_prefix = 'tbs_'; nó sẽ không hoạt động.
Ian
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.