एक एकल साइट में स्थापित एक मल्टीसाइट वर्डप्रेस कन्वर्ट करें


17

एक वर्डप्रेस मल्टीसाइट नेटवर्क को देखते हुए, एक मुख्य ब्लॉग के साथ, और यह मानते हुए कि उस ब्लॉग पर सभी सामग्री को स्थानांतरित कर दिया गया है, कोई कैसे नेटवर्क को एक मानक वर्डप्रेस गैर-नेटवर्क गैर-मल्टीसाइट इंस्टॉल में वापस ढह जाएगा?


मुझे नीचे दो उपयोगी लिंक मिले, यह संभव है। मुझे यहाँ उपयोगी जानकारी मिली: wpmututorials.com/how-to/how-to-disable-multisite और यहाँ: wordpress.org/support/topic/… हम देखेंगे कि यह कैसे जाता है।

मुझे लगता है कि वाक्यांश का एक बेहतर तरीका यह होगा कि किसी नेटवर्क से किसी एक साइट को निकाला जाए। एक नेटवर्क को वापस लाने से वास्तव में केवल मुख्य साइट ही काम करेगी जो उस पर नहीं बनाई गई थी।
sanchothefat

जवाबों:


17

अब मैं एक मल्टीसिट इंस्टाल से साइट को एक्सट्रेक्ट करने के लिए स्टेप्स से एक सिंगल इंस्टेंस पर गया हूँ:

  1. WP की एक स्वच्छ प्रतिलिपि सेट करें, लेकिन इसे स्थापित न करें
  2. साइट आईडी खोजें
  3. नए WP अपलोड फ़ोल्डर में blogs.dir / ID / फ़ाइलों से फ़ाइलों की प्रतिलिपि बनाएँ
  4. साइट द्वारा उपयोग की जाने वाली थीम और नए wp-content फ़ोल्डर में उपयुक्त फ़ोल्डरों के लिए उपयोग किए जाने वाले किसी भी प्लगइन्स को कॉपी करें
  5. मल्टीसाइट डेटाबेस का बैक अप लें, लेकिन टारगेट साइट के लिए केवल टेबल्स और MySQL वर्कबोन या समकक्ष का उपयोग कर उपयोगकर्ता और usermeta टेबल
  6. एक नए डेटाबेस में बैकअप को पुनर्स्थापित करें और तालिका नाम उपसर्गों को बदलें ताकि वे सभी समान हों। 'wp_SITEID_' से 'wp_'
  7. MySQL कार्यक्षेत्र या क्वेरी ब्राउज़र का उपयोग करके उपयोगकर्ताओं और उपयोगकर्ताओं की तालिकाओं को सुव्यवस्थित करें जैसे:
    1. DELETE FROM wp_usermeta WHERE user_id NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
    2. DELETE FROM wp_users WHERE ID NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
    3. UPDATE wp_usermeta SET meta_key = REPLACE( meta_key, 'wp_SITEID_', 'wp_' ) WHERE meta_key LIKE 'wp_SITEID_%';
    4. UPDATE wp_options SET option_name = REPLACE( option_name, 'wp_SITEID_', 'wp_' ) WHERE option_name LIKE 'wp_SITEID_%';
  8. बनाने के लिए WP स्थापित करने की प्रक्रिया शुरू करें, wp-config.phpलेकिन 'इंस्टॉल चलाएँ' पर क्लिक न करें
  9. यदि डिफाल्ट्स उपयोग में हैं या wp-admin में पर्मलिंक्स पृष्ठ पर जाएँ तो एक डिफ़ॉल्ट .htaccess फ़ाइल बनाएँ
  10. आपको अपने डेटाबेस में किसी भी पुराने URL को अपडेट करना होगा। आदर्श रूप से wp-cli में एक सुरक्षित खोज / रिप्लेसमेंट टूल का उपयोग करें या इसके सामान्य उद्देश्य अग्रदूत खोज / db को इंटरकनेक्ट / इट द्वारा बदलें । विशेष रूप से बदलने के blogs.dir/SITE_ID/filesसाथ uploads, और आप अपनी साइट को बदल रहे हैं, तो के लिए खोज URL oldsite.comऔर के साथ बदलें newsite.com

एक निष्पक्ष प्रयास और आपको डेटाबेस संपादन के साथ सावधान रहना होगा, लेकिन केवल यही है कि मैं किसी भी साइट को किसी मौजूदा मल्टीसाइट से इसकी सभी सेटिंग्स आदि के साथ निकालने के लिए देख सकता हूं ... बरकरार।

संपादित करें:

जैसा कि @ जेक द्वारा देखा गया था, मैं उन अंतिम चरणों का उल्लेख करना भूल गया था जिन्हें आपको लेने की आवश्यकता हो सकती है। पुराने URL की खोज / प्रतिस्थापन। मैंने सूची को तदनुसार अद्यतन किया है।


जब मैंने SITEIDसही साइट आईडी में बदलाव किया तो चरण 7 में कुछ भी काम नहीं किया या कोई प्रभाव नहीं पड़ा । इसके बजाय, आपको यह उल्लेख करना चाहिए कि विकल्प siteurlऔर homeविकल्प को wp_optionsतालिका में अद्यतन करने की आवश्यकता होगी । इस के बाकी बहुत अच्छा चेकलिस्ट था। धन्यवाद।
जेक

इसके अलावा, पुराने डोमेन / नए डोमेन के लिए डेटाबेस को खोजने और बदलने की आवश्यकता होगी यदि वह बदल रहा है। और लगभग निश्चित रूप से छवियों या फ़ाइलों के किसी भी लिंक को सही बनाने के लिए ब्लॉगसिर या अपलोड / साइटों को खोजने और बदलने की आवश्यकता होगी। WP में क्रमबद्ध डेटा के साथ सभी सावधान रहें। MYSQL में एक खुला खोज चलाने और बदलने के लिए यह बहुत सुरक्षित नहीं है। कुछ इस तरह का उपयोग करें: interconnectit.com/products/…
Jake

@ जेक धन्यवाद, मैं URL बदलने के संदर्भ को भूल गया और आप सही हैं कि मैं मौजूदा URL के लिए खोज / प्रतिस्थापन चरण को चूक गया, जो पूर्णता के लिए
sanchothefat

@ जेक मैं विस्तार में नहीं गया था, लेकिन चरण 7 मूल रूप से उन उपयोगकर्ताओं को हटा देता है जो उस साइट से संबंधित नहीं हैं जो आप निकाल रहे हैं और सुनिश्चित करें कि उनके पास अभी भी सही अनुमति है। यह वास्तव में एक साफ काम है।
sanchothefat

मैं समझ गया कि उन्होंने क्या किया है, बस पहले जोड़े ने मेरे लिए त्रुटियों को वापस कर दिया, लेकिन शायद मैं कुछ याद कर रहा था, और मुझे यकीन नहीं है कि मेरे पास कोई भी उपयोगकर्ता था, इसलिए इसे छोड़ना आसान था। और मुझे गलत मत समझो, यह उस अन्य सामान के बिना बेहद मददगार था, भविष्य के उपयोग के लिए ध्यान देने योग्य है। धन्यवाद!
जेक

5

नए ब्लॉग को फिर से इंस्टॉल किए बिना मल्टीसाइट इंस्टाल निकालना संभव है। चरणों का पालन करें।

  1. एक बैकअप, डेटाबेस डंप और wp-content का बैकअप बनाएँ
  2. WP_ALLOW_MULTISITEअपने wp-config.php में निरंतर सेट करेंFALSE
  3. wp-config.phpइस तरह MU सेटिंग्स निकालें या टिप्पणी करें:

    /**
    define( 'MULTISITE', true );
    define( 'SUBDOMAIN_INSTALL', false );
    $base = '/wordpress/';
    define( 'DOMAIN_CURRENT_SITE', 'localhost' );
    define( 'PATH_CURRENT_SITE', '/wordpress/' );
    define( 'SITE_ID_CURRENT_SITE', 1 );
    define( 'BLOG_ID_CURRENT_SITE', 1 );
    */
  4. .htaccessनीचे दिए गए स्रोत की तरह, MU सेटिंग्स निकालें :

    # BEGIN WordPress
    RewriteEngine On
    RewriteBase /wordpress/
    RewriteRule ^index\.php$ - [L]
    
    # uploaded files
    RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
    
    # add a trailing slash to /wp-admin        
    RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
    RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
    RewriteRule . index.php [L]
    # END WordPress
  5. Permalinks नया बनाएं, बैकएंड में wp-admin/options-permalink.phpऔर शायद परिणाम को कॉपी करें .htaccess, यदि WP के लिए संभव नहीं है, तो इस फाइल पर लिखने के अधिकार।

  6. तालिका में गैर-उपयोगी प्रविष्टियाँ निकालें users; एक उपकरण में फॉलो sql स्टेटमेंट का उपयोग करें, जैसे phpMyAdmin या Adminer

    `ALTER TABLE `wp_users` DROP `spam`, DROP `deleted`;`
  7. अनुसरण तालिका को गिराया जा सकता है:

    • wp_blogs
    • wp_blog_versions
    • wp_registration_log
    • wp_signups
    • wp_site
    • wp_sitemeta
    • wp_sitecategories (केवल, यदि मौजूद है)

    ( wp_अपने डेटाबेस उपसर्ग में परिवर्तन )

  8. अब आपके पास नेटवर्क के अन्य ब्लॉगों की केवल अंतिम तालिकाएँ हैं। यदि आप इसे भी इस सामग्री का उपयोग करेंगे, तो इसे वर्डप्रेस निर्यात के माध्यम से एक्सएमएल के रूप में निर्यात करें और अब क्लीन सिंगल इंस्टॉल में आयात करें।


1
यह एक अच्छा जवाब है, लेकिन, मैं @sanchothefat से एक स्वीकार कर लिया है के रूप में अपने आईडी की परवाह किए बिना किसी भी साइट को निकालने के लिए, अपने निर्देशों मुझे रूट साइट देना होगा जबकि इस्तेमाल किया जा सकता
टॉम जम्मू नॉवेल

1

वास्तव में यह करना संभव है और काफी आसान है; मैंने खुद इसे कई बार किया है।

वहाँ विचार करने के लिए चीजें हैं।

  1. wp-config.php जो अगर मल्टी साइट या सिंगल साइट को परिभाषित करता है
  2. .htaccess जिसमें मल्टी साइट को सपोर्ट करने के लिए रीराइट नियम होते हैं
  3. मल्टी साइट को सपोर्ट करने के लिए बनाई गई अतिरिक्त टेबल

Wp-config में मल्टी साइट डिफाइन (?) को कमेंट करना और अपने पेरालिंक्स को अपडेट करना साइट को सिंगल साइट / डिफॉल्ट मोड में वापस ला देगा। फिर आपको बस अपने डेटाबेस को साफ करना है।

यदि किसी कारण से आप अपने wt-admin का उपयोग करने में सक्षम नहीं हैं, तो केवल अपनी .htaccess फ़ाइल को हटाने के लिए पर्मलिंक को अपडेट करें। वर्डप्रेस इसे आपके लिए सिंगल साइट मोड में फिर से बनाएगा।

मैं कोड / समर्थन लेख के लिंक को खोजने और इसके साथ उत्तर को अपडेट करने की पूरी कोशिश करूंगा।

यहाँ समर्थन फोरम http://wordpress.org/support/topic/revert-to-single-site पर एक आइटम का लिंक दिया गया है


0

WP 3.5.1 में भी यहाँ बुनियादी प्रक्रियाएँ अच्छी तरह से काम करती हैं: यदि आपने अपनी सबसाइट को कुछ नाम दिया है तो आपको उस नाम को हटाने के लिए डेटाबेस में लिंक को बदलना होगा। यदि मेरी सबसाइट का नाम ... mysite.com/comics था, तो उपरोक्त प्रक्रियाओं का पालन करने के बाद आपका WP mysite.com/comics खोजेगा और पर्मलिंक पर त्रुटियां प्राप्त करेगा। WP- विकल्प तालिका को संपादित करें / कॉमिक्स एक्सटेंशन की तलाश करें और इसे हटा दें। यह भी देखें कि अपलोड निर्देशिका उचित स्थान की ओर इशारा कर रही है - यह अभी भी एक blogs.dir प्रविष्टि दिखा सकता है और अब इसे wp-content / uploads / को इंगित करना चाहिए


क्या आप इसे स्टैंड-अलोन उत्तर होने के लिए संपादित कर सकते हैं। ऐसा लगता है कि यह अन्य उत्तरों में से एक पर एक टिप्पणी हो सकती है।
s_ha_dum

0

बहुत महत्वपूर्ण बिंदु जो याद नहीं किया जाना चाहिए, और इसके बारे में कम बात की जाती है, यह है कि आपके पास अभी भी लाइन होनी चाहिए :

define( 'WP_ALLOW_MULTISITE',...

लेकिन इसे अपडेट किया जाना चाहिए

define( 'WP_ALLOW_MULTISITE', 0 );

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.