एकाधिक वर्डप्रेस वेबसाइटों में उपयोगकर्ता डेटा साझा करने का सबसे अच्छा तरीका क्या है?


10

सबसे पहले, मल्टीसाइट वह नहीं है जिसकी मुझे तलाश है। मेरे पास अलग-अलग डोमेन पर Wordpress का उपयोग करने वाली 5 वेबसाइटें हैं जिनके लिए मैं उपयोगकर्ता खातों को सक्षम करना चाहूंगा। मुझे पूरे नेटवर्क में उपयोगकर्ता डेटा साझा करने की आवश्यकता है और जब कोई उपयोगकर्ता खाता बनाता है, तो उनके पास अन्य सभी वेबसाइटों तक भी त्वरित पहुंच होगी। मैं क्या करने की कोशिश कर रहा हूँ जब मल्टीसाइट का उपयोग करते हुए Wordpress द्वारा अनुशंसित नहीं किया जाता है:

यदि आप ऐसी साइट्स बनाने की योजना बनाते हैं जो दृढ़ता से परस्पर जुड़ी हों, जो डेटा साझा करती हैं, या उपयोगकर्ताओं को साझा करती हैं, तो एक मल्टीसाइट नेटवर्क सबसे अच्छा समाधान नहीं हो सकता है। - http://codex.wordpress.org/Before_You_Create_A_Network (पहला पैराग्राफ, तीसरा वाक्य)

मैंने "साझा उपयोगकर्ता तालिका ट्रिक" का उपयोग करने की कोशिश की है जैसा कि यहां बताया गया है http://wordpress.org/support/topic/multiple-sites-same-users-how और यहां http://xentek.net/articles/528/ कार्यान्वयन-से-वर्डप्रेस-साझा-उपयोगकर्ता-टेबल-ट्रिक / और कई अन्य स्थानों पर ... समस्या यह है कि यह जानकारी 2-7 साल पुरानी है और मैं वर्डप्रेस 3.5.1 का उपयोग कर रहा हूं और यह "ट्रिक" नहीं है 'काम नहीं लगता।

मैंने इस कोड को $table_prefixलाइन के चारों ओर wp-config में डालने का प्रयास किया है ।

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

लंबी कहानी छोटी, मुझे नहीं लगता कि यह तरकीब कोई और काम करती है क्योंकि मैं एडमिन साइट पर दूसरी साइट पर लॉग इन करने में असमर्थ हूं।

इस डेटा को जोड़ने का सबसे अच्छा तरीका क्या होगा, इस पर कोई सुझाव?


1
मुझे नहीं लगता कि मैं CUSTOM_USER_TABLEकाम क्यों नहीं करूंगा ... देखें कि क्या यहां कुछ है: wordpress.stackexchange.com/search?q=CUSTOM_USER_TABLE
brasofilo

जब मैं CUSTOM_USER_TABLE उपयोगकर्ताओं का उपयोग करता हूं तो वे वेबसाइट के बीच साझा होते हैं, हालांकि, दूसरी वेबसाइट पर, मैं व्यवस्थापक के रूप में लॉग इन नहीं कर सकता। घंटे के आसपास खोज और प्लगइन्स और लेख है कि 2-7 साल पुराने हैं मुझे विश्वास है कि इस चाल अब 3.5.1 में काम करता है का नेतृत्व ...
इयान

सवाल यह है कि यह एक चाल नहीं है , यह एक मुख्य विशेषता हैऐसा लगता है कि किसी बग की सूचना नहीं दी गई है, और [wp-hackers] सूची में कुछ भी प्रासंगिक नहीं
दिखा है

आपकी टिप्पणियों के लिए आभार। मैं आपके लिंक में देखी गई कुछ चीज़ों पर गहराई से नज़र डालकर उत्तर खोजने में सक्षम था। मैंने अपना समाधान नीचे पोस्ट किया है। धन्यवाद फिर से @brasofilo
इयान

वास्तव में महान आप उपयोगकर्ताओं को साझा करने के तरीके पर लगभग सभी तरीके से कवर करते हैं। लेकिन यहाँ थोड़ा अलग स्थिति में रहते हैं। Ive 5 वर्डप्रेस वेबसाइट है कि प्रत्येक विशेष वेबसाइट की अपनी डीबी है। जब सभी नए उपयोगकर्ता 5 वेबसाइटों में से किसी पर रजिस्टर करते हैं, तो मैं आपके समाधान का उपयोग कैसे कर सकता हूं? WPMU का उपयोग करके किसी एकल डेटाबेस में इसे पूरा करने के कुछ तरीके के बारे में पता है, लेकिन वास्तव में इसे Wordpress के अलग प्रतिष्ठानों पर करने का कोई तरीका नहीं मिल रहा है। किसी भी मदद का अनुमोदन करेंगे। धन्यवाद

जवाबों:


8

ठीक है, सबसे पहले, मैं एक बेवकूफ की तरह महसूस करता हूं, हालांकि मेरे बचाव में इस बारे में बात करने वाले अधिकांश लेख इस काम को बनाने में बहुत महत्वपूर्ण विवरण का उल्लेख नहीं करते हैं। इसका उत्तर यह है कि आपको डेटाबेस में कम से कम एक व्यवस्थापक के लिए अनुमति निर्धारित करने की आवश्यकता है। यह जानकारी यहां कोडेक्स में देखी जा सकती है: http://codex.wordpress.org/Editing_wp-config.php#Custom_User_and_Usermeta_Tables

Wp-config.php फ़ाइल सेट करने के बाद, यह जरूरी है कि आप मास्टर usermeta तालिका (मेरे मामले में wp_usermeta) फ़ील्ड wp_capabilities पंक्ति और meta_value कॉलम में बदलाव करें। इसे phpMyAdmin के माध्यम से करें।

नोट: लॉग इन करने के लिए कम से कम एक उपयोगकर्ता व्यवस्थापक के लिए ऐसा करें। एक बार मिलने पर आप बैकएंड से अन्य सभी उपयोगकर्ताओं / व्यवस्थापक भूमिकाओं को समायोजित कर सकते हैं।

उपयोगकर्ताओं की अनुमति क्या होगी, इसका स्क्रीनशॉट बदल दिया गया है

प्रत्येक वेबसाइट जो बनाई गई है, उसके लिए यह आवश्यक है कि नई साइटें उपसर्ग को व्यवस्थापक उपयोगकर्ता की भूमिका सौंपे।

मेरे मामले में जब से मैंने केवल 2 साइटों पर इस समय यह काम कर रहा है, ऐसा लगता है:

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

Wp_usermeta मान का स्क्रीनशॉट

पहली पंक्ति डिफ़ॉल्ट तालिका उपसर्ग (इस स्थिति में wp_) के लिए अनुमतियाँ सेट करती है, और दूसरी पंक्ति दूसरी वेबसाइट (इस मामले में tbs_ उपसर्ग के साथ) के लिए अनुमतियाँ सेट करती है।

टिप्पणी के लिए ब्रास्सफ़िलो का धन्यवाद जिसने मुझे अपने मुद्दे को हल करने के लिए थोड़ा और खुदाई करने के लिए कहा!

मुझे उम्मीद है कि यह उत्तर अन्य लोगों की मदद कर सकता है जो मेरे पास एक ही मुद्दा था।


इस सुविधा का उपयोग कभी नहीं किया, लेकिन यह जानकर खुशी हुई कि इसे काम करने की यह छोटी सी तरकीब है;) नाइस राइट-अप +1
ब्रासोफिलो

1
धन्यवाद, यह निश्चित रूप से ट्यूटोरियल में उल्लेख किया जाना चाहिए!
सिरसा सैंडू

2

Wp_users और wp_meta साझा करते समय एक और समस्या है, अन्य वर्डप्रेस इंस्टॉलेशन उपयोगकर्ताओं को पहचानता है लेकिन यह अन्य वेबसाइट से आने वाले उपयोगकर्ताओं की भूमिकाओं को नहीं पहचानता है । भूमिका अपरिभाषित के रूप में दिखाई देती है।

इसलिए, आपने अपने wp-config.php को आवश्यकतानुसार संपादित किया:

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

मुझे लगता है कि ऐसा करने का सबसे आसान तरीका है, db के साथ छेड़छाड़ किए बिना, wp इंटर्नल का उपयोग करके। लॉगिन करने पर, एक भूमिका सौंपना संभव है। मान लीजिए, हमें सभी के लिए योगदानकर्ता की भूमिका चाहिए, और उपयोगकर्ता 'सुपरमैन' के लिए प्रशासक की भूमिका।

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

इसलिए, प्रारंभिक वेबसाइट से आने वाले उपयोगकर्ताओं को लॉगिन करते समय 'योगदानकर्ता' की भूमिका मिलती है।

  • व्यवस्थापक उपयोगकर्ता के साथ लॉग-इन करने के बाद आप उपयोगकर्ता चेक को हटा सकते हैं।
  • उपयोगकर्ताओं की एक से अधिक भूमिका हो सकती है, क्षमताएँ मायने रखती हैं।

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


0

मुझे एक नई पंक्ति बनानी थी:

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

और user_id=1। आपके द्वारा बताई गई विधि काम नहीं आई।


1
उपरोक्त उत्तर में "tbs" मेरे द्वारा स्थापित दूसरी वर्डप्रेस वेबसाइट का उपसर्ग है। इसलिए टेबल के बजाय wp_posts होने के कारण वे tbs_posts होंगे। जब तक आप स्पष्ट रूप से $ table_prefix = 'tbs_' सेट नहीं करते; यह काम नहीं करेगा।
इयान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.