Kullanıcı verilerini birden çok Wordpress web sitesinde paylaşmanın en iyi yolu nedir?


10

Her şeyden önce, Multisite aradığım şey değil. Kullanıcı hesaplarını etkinleştirmek istediğim ayrı etki alanlarında Wordpress kullanan 5 web sitem var. Kullanıcı verilerinin tüm ağda paylaşılması gerekiyor ve bir kullanıcı bir hesap oluşturduğunda, diğer tüm web sitelerine de anında erişebiliyorlardı. Yapmaya çalıştığım şey Multisite kullanırken Wordpress tarafından önerilmiyor:

Güçlü bir şekilde birbirine bağlı, veri paylaşan veya kullanıcı paylaşan siteler oluşturmayı planlıyorsanız, çok siteli bir ağ en iyi çözüm olmayabilir. - http://codex.wordpress.org/Before_You_Create_A_Network (1. paragraf, 3. cümle)

Burada belirtildiği gibi "paylaşılan kullanıcı tablosu hile" kullanmayı denedim http://wordpress.org/support/topic/multiple-sites-same-users-how ve burada http://xentek.net/articles/528/ wordpress-shared-users-table-trick / ve bir dizi başka yerde ... sorun bu bilginin 2-7 yaşında olması ve Wordpress 3.5.1 kullanıyorum ve bu "hile" değil Çalışmıyor gibi görünüyor.

$table_prefixSatır çevresindeki wp-config içine bu kodu eklemek denedim .

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

Uzun lafın kısası, yönetici tarafında ikinci siteye giriş yapamadığım için bu hile artık işe yaramıyor.

Bu verileri bağlamanın en iyi yolu hakkında herhangi bir öneriniz var mı?


1
Neden CUSTOM_USER_TABLEişe yaramayacağını anlamıyorum ... Burada bir şey olup olmadığına bakın: wordpress.stackexchange.com/search?q=CUSTOM_USER_TABLE
brasofilo

CUSTOM_USER_TABLE kullanıcıları web sitesi arasında paylaşıldığımda, ancak ikinci web sitesinde yönetici olarak oturum açamıyorum. Saatlerce arama yapmak ve 2-7 yaş arası eklentiler ve makaleler bulmak beni bu hilenin artık 3.5.1'de çalışmadığına inanmaya yönlendiriyor ...
Ian

Soru şu ki, bu bir hile değil , temel bir özellik . Hiçbir hata rapor edilmemiş gibi görünüyor ve ilgili hiçbir şey [wp-hackerlar] listesinde
görünmüyor

Yorumlarınız için teşekkürler. Bağlantılarınızda gördüğüm bazı şeyleri daha derinlemesine inceleyerek cevabı bulabildim. Çözümümü aşağıya gönderdim. Tekrar teşekkürler @brasofilo
Ian

Gerçekten harika neredeyse kullanıcıları paylaşmak için tüm yolları ele. ama burada biraz farklı bir durum var. Ive 5 wordpress web sitesi her belirli web sitesi kendi db sahiptir. Yeni bir kullanıcı 5 web sitesinden herhangi birine kaydolduğunda tüm ayrı kullanıcı tablolarını bağlamak için çözümünüzü nasıl kullanabilirim, hemen tek bir kayıt kullanarak diğer web sitelerinden herhangi birine giriş yapabilir mi? Im WPMU kullanarak tek bir veritabanında bunu başarmak için bir yol farkında ama im gerçekten wordpress ayrı kurulumları yapmak için herhangi bir yol bulamıyorum. Herhangi bir yardımı uygulayacaktır. Teşekkür ederim

Yanıtlar:


8

Tamam, her şeyden önce kendimi aptal gibi hissediyorum, ancak savunmamda bu konu hakkında konuşan makalelerin çoğu bu işi yaparken çok önemli bir ayrıntıdan bahsetmiyor. Cevap, veritabanında en az bir yönetici için izin ayarlamanız gerektiğidir. Bu bilgi Kodeks'de şu adreste bulunabilir: http://codex.wordpress.org/Editing_wp-config.php#Custom_User_and_Usermeta_Tables

Wp-config.php dosyasını ayarladıktan sonra, ana kullanıcı meta tablosunda (benim durumumda wp_usermeta) alan wp_capability satırında ve meta_değer sütununda değişiklik yapmanız zorunludur. Bunu phpMyAdmin ile yapın.

Not: Oturum açmak için en az bir kullanıcı yöneticisi yapın. Oturum açtıktan sonra arka uçtan diğer tüm kullanıcıları / yönetici rollerini ayarlayabilirsiniz.

Hangi kullanıcı izinlerinin değiştirileceğinin ekran görüntüsü

Oluşturulan her web sitesi için, yeni siteler önekinin yönetici kullanıcı rolüne atanması gerekir.

Benim durumumda şu anda sadece 2 sitede çalışıyor gibi beri şu şekilde görünüyor:

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

Wp_usermeta value ekran görüntüsü

İlk satır varsayılan tablo öneki (bu durumda wp_) için izinleri ayarlar ve ikinci satır ikinci web sitesi için izinleri ayarlar (bu durumda tbs_ öneki ile).

Nihayet sorunumu çözmek için biraz daha kazmamı işaret eden yorum için brasofilo'ya teşekkürler!

Umarım bu cevap benimle aynı sorunu yaşayanlara yardımcı olabilir.


Bu özelliği hiç kullanmadım, ancak çalışmasını sağlamak için bu küçük hile olduğunu bilmek sevindim;) Güzel yazı +1
brasofilo

1
teşekkür ederim, bu kesinlikle öğreticiler belirtilmelidir!
Mircea Sandu

2

Wp_users ve wp_meta'yı paylaşırken başka bir sorun daha var, diğer wordpress yüklemesi kullanıcıları tanıyor ancak diğer web sitesinden gelen kullanıcıların rollerini tanımıyor . Rol tanımsız olarak görünür.

Bu nedenle, wp-config.php dosyanızı gerektiği gibi düzenlediniz:

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

Ben db ile müdahalesi olmadan, bunu yapmanın en kolay yolu wp iç kullanarak olduğunu düşünüyorum. Giriş yaptıktan sonra bir rol atamak mümkündür. Diyelim ki herkes için katkıda bulunan rolüne ve 'superman' kullanıcısı için yönetici rolüne ihtiyacımız var.

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

Bu nedenle, ilk web sitesinden gelen kullanıcılar giriş yaptıkları zaman "katkıda bulunan" rolünü alırlar.

  • Yönetici kullanıcıyla oturum açtıktan sonra kullanıcı kontrolünü silebilirsiniz.
  • Kullanıcıların birden fazla rolü olabilir, yetenekler önemlidir.

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


0

Yeni bir satır oluşturmak zorunda kaldım:

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

ve user_id=1. Açıkladığınız yöntem işe yaramadı.


1
Yukarıdaki cevapta "tbs" yüklediğim ikinci WordPress web sitesinin önekidir. Yani tablo wp_posts olmak yerine tbs_posts olurlar. Açık bir şekilde $ table_prefix = 'tbs_' ayarlamazsanız; işe yaramaz.
Ian
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.