แปลงการติดตั้ง Multisite WordPress เป็นเว็บไซต์เดียว


17

ด้วยเครือข่าย WordPress Multisite พร้อมกับบล็อกหลักและสมมติว่าเนื้อหาทั้งหมดถูกย้ายไปยังบล็อกนั้นจะมีวิธีใดที่จะยุบเครือข่ายกลับลงใน WordPress มาตรฐานที่ไม่ใช่เครือข่ายไม่ใช่ติดตั้งหลายไซต์


ฉันพบลิงก์ที่มีประโยชน์สองลิงก์ด้านล่างนี้เป็นไปได้ ฉันพบข้อมูลที่เป็นประโยชน์ที่นี่: wpmututorials.com/how-to/how-to-disable-multisiteและที่นี่: wordpress.org/support/topic/ ......เราจะดูว่ามันจะเป็นอย่างไร

ฉันคิดว่าวิธีที่ดีกว่าในการใช้วลีเพื่อแยกไซต์เดียวออกจากเครือข่าย การยุบเครือข่ายกลับจะใช้งานได้กับไซต์หลักเท่านั้น
sanchothefat

คำตอบ:


17

ฉันได้ทำตามขั้นตอนในการแยกไซต์จากการติดตั้งแบบหลายไซต์ไปยังอินสแตนซ์เดียวตอนนี้:

  1. ตั้งค่าสำเนา WP แบบใหม่ทั้งหมด แต่ไม่ต้องติดตั้ง
  2. ค้นหารหัสไซต์
  3. คัดลอกไฟล์จาก blogs.dir / ID / ไฟล์ไปยังโฟลเดอร์ WP uploads ใหม่
  4. คัดลอกธีมที่ไซต์ใช้และปลั๊กอินที่ใช้ไปยังโฟลเดอร์ที่เหมาะสมในโฟลเดอร์ wp-content ใหม่
  5. ใช้การสำรองฐานข้อมูลหลายไซต์ แต่เฉพาะตารางสำหรับไซต์เป้าหมายและผู้ใช้และตาราง usermeta โดยใช้ MySQL workbench หรือเทียบเท่า
  6. กู้คืนการสำรองข้อมูลไปยังฐานข้อมูลใหม่และเปลี่ยนคำนำหน้าชื่อตารางเพื่อให้เหมือนกันทั้งหมด 'wp_SITEID_' ถึง 'wp_'
  7. การใช้ MySQL workbench หรือแบบสอบถามเบราว์เซอร์เป็นระเบียบเรียบร้อยขึ้นผู้ใช้และตาราง usermeta เช่นนั้น:
    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. สร้างไฟล์. htaccess ที่เป็นค่าเริ่มต้นหากมีการใช้งาน Permalink หรือเพียงไปที่หน้า Permalinks ใน wp-admin
  10. คุณจะต้องอัปเดต URL เก่า ๆ ในฐานข้อมูลของคุณต่อไป จะเป็นการดีที่ใช้การค้นหาปลอดภัย / เครื่องมืออย่างหนึ่งในการแทนที่WP-CLIหรือสารตั้งต้นที่ใช้งานทั่วไปของการค้นหา / แทนที่ฐานข้อมูลโดยการเชื่อมต่อระหว่างกัน โดยเฉพาะแทนที่blogs.dir/SITE_ID/filesด้วยuploadsและถ้าคุณกำลังจะเปลี่ยน URL เว็บไซต์ของคุณค้นหาและแทนที่ด้วยoldsite.comnewsite.com

ความพยายามที่ค่อนข้างยุติธรรมและคุณต้องระวังการแก้ไขฐานข้อมูล แต่นั่นเป็นสิ่งเดียวที่ฉันสามารถเห็นเพื่อแยกไซต์เดียวจากหลายไซต์ที่มีอยู่พร้อมการตั้งค่าทั้งหมด ฯลฯ ... ไม่เป็นอันตราย

แก้ไข:

ตามที่ @Jake ฉันลืมพูดถึงขั้นตอนสุดท้ายที่คุณอาจต้องทำเช่น ค้นหา / แทนที่ URL เก่า ฉันได้ปรับปรุงรายการให้สอดคล้อง


ไม่มีอะไรในขั้นตอนที่ 7 ทำงานหรือมีผลกระทบใด ๆ เมื่อฉันเปลี่ยนSITEIDเป็นรหัสไซต์ที่ถูกต้อง แทนที่จะเป็นเช่นนั้นคุณควรพูดถึงว่าsiteurlและhomeตัวเลือกต่าง ๆ จะต้องได้รับการปรับปรุงในwp_optionsตาราง ส่วนที่เหลือเป็นรายการตรวจสอบที่ดีงาม ขอบคุณ
Jake

มีแนวโน้มที่จะต้องทำการค้นหาและแทนที่ในฐานข้อมูลสำหรับโดเมนเก่า / โดเมนใหม่หากมีการเปลี่ยนแปลง และเกือบจะแน่นอนจำเป็นต้องค้นหาและแทนที่สำหรับบล็อก. dir หรืออัพโหลด / เว็บไซต์เพื่อให้แน่ใจว่าลิงค์ไปยังภาพ / ไฟล์ใด ๆ ที่ถูกต้อง ระวังด้วยข้อมูลที่เป็นอนุกรมทั้งหมดใน WP การเรียกค้นและแทนที่แบบเปิดใน MYSQL นั้นไม่ปลอดภัย ใช้สิ่งที่ชอบ: interconnectit.com/products/…
Jake

@Jake ขอบคุณฉันลืมบริบทของการเปลี่ยน URL และคุณถูกต้องฉันพลาดการค้นหา / แทนที่ขั้นตอนสำหรับ URL ที่มีอยู่เพิ่มที่ในเพื่อประโยชน์สมบูรณ์
sanchothefat

@ เจคฉันไม่ได้ลงรายละเอียด แต่โดยทั่วไปขั้นตอนที่ 7 จะเป็นการลบผู้ใช้ที่ไม่ได้อยู่ในไซต์ที่คุณกำลังแตกออกและทำให้แน่ใจว่าพวกเขายังมีสิทธิ์ที่ถูกต้อง มันเป็นงานที่ต้องทำความสะอาดจริงๆ
sanchothefat

ฉันเข้าใจสิ่งที่พวกเขาทำเพียงแค่คู่แรกคืนข้อผิดพลาดให้ฉัน แต่บางทีฉันหายไปบางสิ่งบางอย่างและฉันไม่แน่ใจว่าฉันมีผู้ใช้ที่จะทำความสะอาดดังนั้นมันง่ายที่จะข้ามไป และอย่าเข้าใจฉันผิดนี่เป็นประโยชน์อย่างมากหากไม่มีสิ่งอื่นนั้นดีที่ควรทราบสำหรับการใช้ในอนาคต ขอบคุณ!
Jake

5

เป็นไปได้ที่จะลบการติดตั้งแบบหลายไซต์โดยไม่ต้องติดตั้งบล็อกใหม่ ทำตามขั้นตอน

  1. สร้างการสำรองข้อมูลดัมพ์ฐานข้อมูลและการสำรองไฟล์ของ wp-content
  2. ตั้งค่าคงที่ WP_ALLOW_MULTISITEใน wp-config.php ของคุณเป็นFALSE
  3. ลบหรือแสดงความคิดเห็นการตั้งค่า MU ในwp-config.phpเช่นนี้:

    /**
    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. ลบการตั้งค่า MU ออก.htaccessเช่นเดียวกับแหล่งที่มาด้านล่าง:

    # 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. สร้างลิงก์ถาวรใหม่ในแบ็กเอนด์ wp-admin/options-permalink.phpและอาจคัดลอกผลลัพธ์ใน.htaccessถ้าเป็นไปไม่ได้สำหรับ WP สิทธิ์ในการเขียนไฟล์นี้

  6. ลบรายการที่ไม่เป็นประโยชน์ในตาราง users ; ใช้คำสั่ง follow 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. ตอนนี้คุณมีเพียงตารางสุดท้ายของบล็อกอื่น ๆ ของเครือข่าย หากคุณจะใช้เนื้อหานี้ด้วยให้ทำการส่งออกสิ่งนี้มาก่อนผ่านการส่งออก WordPress เป็น XML และนำเข้าตอนนี้ในการติดตั้งเดี่ยวทั้งหมด


1
นี่เป็นคำตอบที่ดี แต่ฉันยอมรับ @sanchothefat เนื่องจากเขาสามารถใช้เพื่อแยกไซต์ใด ๆ โดยไม่คำนึงถึง ID ในขณะที่คำแนะนำของคุณจะให้ไซต์รูทแก่ฉัน
Tom J Nowell

1

จริงๆแล้วมันเป็นไปได้และค่อนข้างง่ายที่จะทำ; ฉันทำเองหลายครั้ง

มีสิ่งที่ต้องพิจารณา

  1. wp-config.php ซึ่งกำหนดว่าเป็นหลายไซต์หรือไซต์เดียว
  2. .htaccess ซึ่งมีกฎการเขียนซ้ำเพื่อสนับสนุนหลายไซต์
  3. ตารางเพิ่มเติมที่สร้างขึ้นเพื่อรองรับหลายไซต์

การแสดงความคิดเห็นเกี่ยวกับการกำหนดหลายไซต์ (?) ใน wp-config และการปรับปรุงลิงก์ถาวรของคุณจะเปลี่ยนไซต์กลับเป็นโหมดเดียว / โหมดเริ่มต้น สิ่งที่คุณต้องทำคือล้างฐานข้อมูลของคุณ

หากด้วยเหตุผลบางประการคุณไม่สามารถเข้าถึง wp-admin ของคุณเพื่ออัปเดตลิงก์ได้เพียงลบไฟล์. htaccess ของคุณ WordPress จะสร้างใหม่ให้คุณในโหมดไซต์เดียว

ฉันจะทำให้ดีที่สุดเพื่อค้นหาลิงก์ไปยังรหัส / บทความสนับสนุนและอัปเดตคำตอบด้วย

นี่คือลิงค์ไปยังหนึ่งรายการในฟอรัมการสนับสนุนhttp://wordpress.org/support/topic/revert-to-single-site


0

กระบวนการพื้นฐานที่นี่ทำงานได้ดีแม้ใน WP 3.5.1 One clarification: หากคุณตั้งชื่อไซต์ย่อยของคุณคุณจะต้องเปลี่ยนลิงค์ในฐานข้อมูลเพื่อลบชื่อนั้น หากไซต์ย่อยของฉันชื่อ ... mysite.com/comics หลังจากทำตามขั้นตอนข้างต้น WP ของคุณจะค้นหา mysite.com/comics และรับข้อผิดพลาดในลิงก์ถาวร แก้ไขตาราง WP-OPTIONS ที่กำลังมองหาส่วนขยาย / comics และลบออก นอกจากนี้ให้ตรวจสอบว่าไดเรกทอรีอัปโหลดชี้ไปยังตำแหน่งที่ถูกต้อง - มันอาจยังแสดงรายการบล็อก.dirและตอนนี้ควรชี้ไปที่ wp-content / uploads /


คุณช่วยแก้ไขสิ่งนี้ให้เป็นคำตอบแบบสแตนด์อโลนได้ไหม ดูเหมือนว่ามันน่าจะเป็นความเห็นของหนึ่งในคำตอบอื่น ๆ
s_ha_dum

0

จุดสำคัญมากที่ไม่ควรพลาดและมีการพูดถึงน้อยคือคุณควรมีบรรทัดต่อไปนี้:

define( 'WP_ALLOW_MULTISITE',...

แต่ควรเปลี่ยนให้อัปเดตเป็น

define( 'WP_ALLOW_MULTISITE', 0 );

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.