Ubah instalasi WordPress Multisite menjadi satu situs

17

Diberikan jaringan WordPress Multisite, dengan blog utama, dan dengan asumsi semua konten telah dipindahkan ke blog itu, bagaimana orang akan merobohkan jaringan kembali ke instalasi WordPress non-jaringan non-multisite standar?

Tom J Nowell
sumber
Saya menemukan dua tautan bermanfaat di bawah ini, ini mungkin. Saya menemukan info bermanfaat di sini: wpmututorials.com/how-to/how-to-disable-multisite dan di sini: wordpress.org/support/topic/… Kita akan lihat bagaimana kelanjutannya.
Saya pikir cara yang lebih baik untuk ungkapan itu adalah mengekstraksi satu situs dari jaringan. Runtuh jaringan kembali hanya akan benar-benar berfungsi situs utama tidak ada yang dibuat di sana.
sanchothefat

Jawaban:

17

Saya telah melalui langkah-langkah untuk mengekstrak situs dari instalasi multisite menjadi satu instance sekarang:

  1. Siapkan salinan WP yang bersih tetapi jangan pasang
  2. Temukan ID situs
  3. Salin file dari blogs.dir / ID / file ke folder unggahan WP yang baru
  4. Salin tema yang digunakan situs dan plugin apa pun yang digunakannya ke folder yang sesuai di folder konten-wp yang baru
  5. Mengambil cadangan dari database multisite tetapi hanya tabel untuk situs target dan tabel pengguna dan usermeta menggunakan meja kerja MySQL atau yang setara
  6. Kembalikan cadangan ke database baru dan ubah awalan nama tabel sehingga semuanya sama, misalnya. 'wp_SITEID_' to 'wp_'
  7. Menggunakan meja kerja MySQL atau browser permintaan merapikan tabel pengguna dan usermeta seperti:
    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. Mulai proses instalasi WP untuk membuat wp-config.phptetapi jangan klik 'Jalankan instal'
  9. Buat file .htaccess default jika permalink sedang digunakan atau kunjungi halaman permalinks di wp-admin
  10. Anda perlu memperbarui URL lama di basis data Anda selanjutnya. Idealnya gunakan alat pencarian / ganti yang aman seperti yang ada di wp-cli atau pencarian prekursor tujuan umum / ganti db dengan interkoneksi / itu . Ganti secara khusus blogs.dir/SITE_ID/filesdengan uploads, dan jika Anda mengubah pencarian URL situs Anda oldsite.comdan ganti dengan newsite.com.

Upaya yang cukup adil dan Anda harus berhati-hati dengan pengeditan basis data, tetapi hanya itu yang dapat saya lihat untuk mengekstrak satu situs dari multisite yang ada dengan semua pengaturannya dll ... utuh.

EDIT:

Seperti yang terlihat oleh @Jake, saya lupa menyebutkan langkah terakhir yang mungkin perlu Anda ambil misalnya. cari / ganti dari URL lama. Saya telah memperbarui daftar sesuai.

sanchothefat
sumber
Tidak ada dalam langkah 7 yang berfungsi atau memiliki efek ketika saya mengubah SITEIDke id situs yang benar. Alih-alih itu, Anda harus menyebutkan bahwa opsi siteurldan homekemungkinan akan perlu diperbarui dalam wp_optionstabel. Sisanya adalah daftar periksa yang cukup bagus. Terima kasih.
Jake
Juga kemungkinan perlu melakukan pencarian dan penggantian pada database untuk domain lama / domain baru jika berubah. Dan hampir PASTI perlu mencari dan mengganti blogs.dir atau mengunggah / situs untuk memastikan tautan ke gambar / file sudah benar. Berhati-hatilah dengan semua data serial di WP. Sangat tidak aman untuk menjalankan pencarian terbuka dan ganti dalam MYSQL. Gunakan sesuatu seperti: interconnectit.com/products/…
Jake
@Jake terima kasih, saya lupa konteks mengubah URL dan Anda benar saya melewatkan langkah pencarian / ganti untuk URL yang ada, menambahkan bahwa demi kelengkapan
sanchothefat
@Jake Saya tidak masuk ke detail tetapi langkah 7 pada dasarnya menghapus pengguna yang bukan milik situs yang Anda ekstrak dan memastikan mereka masih memiliki izin yang benar. Ini benar-benar tugas membersihkan.
sanchothefat
Saya mengerti apa yang mereka lakukan, hanya pasangan pertama yang mengembalikan kesalahan untuk saya, tetapi mungkin saya kehilangan sesuatu, dan saya tidak yakin ada pengguna yang harus saya bersihkan, jadi bagaimanapun juga mudah untuk dilewati. Dan jangan salah, ini sangat membantu tanpa hal-hal lain, hanya baik untuk dicatat untuk digunakan di masa depan. Terima kasih!
Jake
5

Dimungkinkan untuk menghapus instalasi multisite tanpa menginstal ulang blog baru. Ikuti langkah-langkahnya.

  1. Buat cadangan, dump basis data, dan cadangan file konten-wp
  2. Tetapkan konstanta WP_ALLOW_MULTISITEdi wp-config.php keFALSE
  3. Hapus atau komentari pengaturan MU wp-config.php, seperti ini:

    /**
    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. Hapus pengaturan MU dari .htaccess, seperti sumber di bawah ini:

    # 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. Buat permalink baru, di backend wp-admin/options-permalink.phpdan mungkin salin hasilnya .htaccess, jika tidak memungkinkan untuk WP, hak untuk menulis pada file ini.

  6. Hapus entri yang tidak berguna dalam tabel users; gunakan pernyataan sql ikuti di alat, seperti phpMyAdmin atau Adminer

    `ALTER TABLE `wp_users` DROP `spam`, DROP `deleted`;`
  7. Tabel follow dapat dijatuhkan:

    • wp_blogs
    • wp_blog_versions
    • wp_registration_log
    • wp_signups
    • wp_site
    • wp_sitemeta
    • wp_sitecategories (hanya, jika ada)

    (ubah wp_ke awalan basis data Anda)

  8. Sekarang Anda hanya memiliki tabel terakhir dari blog lain dalam jaringan. Jika Anda akan menggunakannya juga konten ini, maka ekspor ini sebelumnya melalui ekspor WordPress sebagai XML dan impor sekarang di instalasi tunggal bersih.

bueltge
sumber
1
Ini adalah jawaban yang bagus, tetapi, saya telah menerimanya oleh @sanchothefat karena dapat digunakan untuk mengekstraksi situs apa pun tanpa ID, sedangkan instruksi Anda akan memberi saya situs root
Tom J Nowell
1

Sebenarnya itu mungkin dan cukup mudah dilakukan; Saya sudah melakukannya sendiri beberapa kali.

Ada beberapa hal yang perlu dipertimbangkan.

  1. wp-config.php yang mendefinisikan apakah multi situs atau situs tunggal
  2. .htaccess yang berisi aturan penulisan ulang untuk mendukung multi situs
  3. tabel tambahan dibuat untuk mendukung multi situs

Mengomentari multi situs define (?) Di wp-config dan memperbarui permalink Anda akan mengembalikan situs ke mode situs / mode default. Maka yang harus Anda lakukan adalah membersihkan database Anda.

Jika karena alasan tertentu Anda tidak dapat mengakses wp-admin Anda untuk memperbarui permalinks cukup hapus file .htaccess Anda. WordPress akan membuatnya kembali untuk Anda dalam mode situs tunggal.

Saya akan melakukan yang terbaik untuk menemukan tautan ke kode / artikel pendukung dan memperbarui jawabannya.

Berikut ini tautan ke satu item di forum dukungan http://wordpress.org/support/topic/revert-to-single-site

Steve
sumber
0

Proses dasar di sini berfungsi dengan baik bahkan di WP 3.5.1 Satu klarifikasi: Jika Anda memberi nama subsite Anda sesuatu, Anda harus mengubah tautan dalam database untuk menghapus nama itu. Jika subsite saya bernama ... mysite.com/comics maka setelah mengikuti prosedur di atas, WP Anda akan mencari mysite.com/comics dan mendapatkan kesalahan pada permalinks. Edit tabel WP-OPTIONS mencari ekstensi / komik dan hapus. Juga, periksa apakah direktori Upload menunjuk ke lokasi yang tepat - mungkin masih menampilkan entri blogs.dir dan sekarang seharusnya menunjuk ke wp-content / uploads /

pengguna28829
sumber
Bisakah Anda mengedit ini menjadi jawaban yang berdiri sendiri. Sepertinya itu mungkin komentar di salah satu jawaban lainnya.
s_ha_dum
0

Poin yang sangat penting yang tidak boleh dilewatkan, dan itu kurang dibicarakan, adalah bahwa Anda masih harus memiliki garis:

define( 'WP_ALLOW_MULTISITE',...

Tetapi harus diubah diperbarui menjadi

define( 'WP_ALLOW_MULTISITE', 0 );

smhnaji
sumber