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?
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:
Siapkan salinan WP yang bersih tetapi jangan pasang
Temukan ID situs
Salin file dari blogs.dir / ID / file ke folder unggahan WP yang baru
Salin tema yang digunakan situs dan plugin apa pun yang digunakannya ke folder yang sesuai di folder konten-wp yang baru
Mengambil cadangan dari database multisite tetapi hanya tabel untuk situs target dan tabel pengguna dan usermeta menggunakan meja kerja MySQL atau yang setara
Kembalikan cadangan ke database baru dan ubah awalan nama tabel sehingga semuanya sama, misalnya. 'wp_SITEID_' to 'wp_'
Menggunakan meja kerja MySQL atau browser permintaan merapikan tabel pengguna dan usermeta seperti:
DELETE FROM wp_usermeta WHERE user_id NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
DELETE FROM wp_users WHERE ID NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
UPDATE wp_usermeta SET meta_key = REPLACE( meta_key, 'wp_SITEID_', 'wp_' ) WHERE meta_key LIKE 'wp_SITEID_%';
UPDATE wp_options SET option_name = REPLACE( option_name, 'wp_SITEID_', 'wp_' ) WHERE option_name LIKE 'wp_SITEID_%';
Mulai proses instalasi WP untuk membuat wp-config.phptetapi jangan klik 'Jalankan instal'
Buat file .htaccess default jika permalink sedang digunakan atau kunjungi halaman permalinks di wp-admin
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.
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.
Buat cadangan, dump basis data, dan cadangan file konten-wp
Hapus pengaturan MU dari .htaccess, seperti sumber di bawah ini:
# BEGIN WordPressRewriteEngineOnRewriteBase/wordpress/RewriteRule^index\.php$ -[L]# uploaded filesRewriteRule^([_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
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.
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`;`
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)
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.
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.
wp-config.php yang mendefinisikan apakah multi situs atau situs tunggal
.htaccess yang berisi aturan penulisan ulang untuk mendukung multi situs
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.
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 /
Jawaban:
Saya telah melalui langkah-langkah untuk mengekstrak situs dari instalasi multisite menjadi satu instance sekarang:
DELETE FROM wp_usermeta WHERE user_id NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
DELETE FROM wp_users WHERE ID NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
UPDATE wp_usermeta SET meta_key = REPLACE( meta_key, 'wp_SITEID_', 'wp_' ) WHERE meta_key LIKE 'wp_SITEID_%';
UPDATE wp_options SET option_name = REPLACE( option_name, 'wp_SITEID_', 'wp_' ) WHERE option_name LIKE 'wp_SITEID_%';
wp-config.php
tetapi jangan klik 'Jalankan instal'blogs.dir/SITE_ID/files
denganuploads
, dan jika Anda mengubah pencarian URL situs Andaoldsite.com
dan ganti dengannewsite.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.
sumber
SITEID
ke id situs yang benar. Alih-alih itu, Anda harus menyebutkan bahwa opsisiteurl
danhome
kemungkinan akan perlu diperbarui dalamwp_options
tabel. Sisanya adalah daftar periksa yang cukup bagus. Terima kasih.Dimungkinkan untuk menghapus instalasi multisite tanpa menginstal ulang blog baru. Ikuti langkah-langkahnya.
WP_ALLOW_MULTISITE
di wp-config.php keFALSE
Hapus atau komentari pengaturan MU
wp-config.php
, seperti ini:Hapus pengaturan MU dari
.htaccess
, seperti sumber di bawah ini:Buat permalink baru, di backend
wp-admin/options-permalink.php
dan mungkin salin hasilnya.htaccess
, jika tidak memungkinkan untuk WP, hak untuk menulis pada file ini.Hapus entri yang tidak berguna dalam tabel
users
; gunakan pernyataan sql ikuti di alat, seperti phpMyAdmin atau AdminerTabel follow dapat dijatuhkan:
(ubah
wp_
ke awalan basis data Anda)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.
sumber
Sebenarnya itu mungkin dan cukup mudah dilakukan; Saya sudah melakukannya sendiri beberapa kali.
Ada beberapa hal yang perlu dipertimbangkan.
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
sumber
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 /
sumber
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 );
sumber