@ Insanity5902 : Penempatan situs WordPress dari satu kotak ke kotak lainnya telah menjadi PITA sejak hari pertama saya mulai bekerja dengan WordPress. (Sejujurnya itu adalah PITA dengan Drupal selama 2 tahun sebelum saya mulai dengan WordPress sehingga masalahnya tentu tidak hanya dengan WordPress.)
Itu mengganggu saya bahwa setiap kali saya harus memindahkan situs saya harus menghabiskan banyak upaya duplikat dan itu membuat saya dari penggelaran untuk menguji sesering yang saya inginkan. Jadi sekitar 4-6 bulan yang lalu saya mulai bekerja pada sebuah plugin untuk menyelesaikan masalah migrasi hosting dan saya menyebutkan ide-ide saya di forum WP Tavern .
Maju cepat untuk hari ini dan saya sudah cukup berhasil dan saya dengan mudah menyebutnya " WP Migrasi Webhosts ." Meskipun plugin ini masih sangat banyak beta (mungkin bahkan alpha) diberikan pertanyaan Anda, saya pikir saya siap untuk membiarkan orang mulai menggedor itu.
Kasus penggunaan yang dibayangkan adalah:
- pertama pengembang menangani mengunggah semua tema dan file plugin yang diubah melalui FTP,
- kemudian mengunggah pengembangan database MySQL ke server pengujian secara keseluruhan dan akhirnya
- kemudian jalankan plugin untuk memigrasi referensi dari domain sebelumnya ke yang baru. (Plugin saya tidak mencoba untuk menyelesaikan penggabungan bidang database baru atau tabel dengan data langsung; ITU adalah masalah yang jauh lebih besar yang saya tidak yakin bagaimana cara mengatasinya.)
Anda dapat mengunduh plugin dari situs web saya dan unzip ke direktori plugins Anda (jika Anda tidak tahu bagaimana melakukan ini maka plugin ini bukan untuk Anda karena memerlukan seseorang yang tahu apa yang mereka lakukan untuk menggunakannya.) Saya akan jaga plugin ini online sampai saya merilisnya ke WordPress.org dan setelah itu Anda harus mencarinya di sana.
Untuk menggunakannya Anda mengambil pendekatan yang berbeda dalam Anda wp-config.php
yang normal dengan komentar dari empat (4) mendefinisikan DB_NAME
, DB_USER
, DB_PASSWORD
dan DB_HOST
dan malah mendaftarkan default untuk webhosts dan kemudian mendaftar info tentang masing-masing hosting sendiri. Inilah yang wp-config.php
terlihat seperti segmen tersebut (perhatikan bagian pertama adalah kode yang tidak dibutuhkan yang dikomentari dan juga perhatikan bahwa saya mengatur file host saya di mesin lokal saya dengan .dev
domain tingkat atas yang tidak dapat dirutekan untuk membuat pengembangan sehari-hari lebih mudah. Di Mac, VirtualHostX membuat ini mudah):
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
//define('DB_NAME', 'wp30');
/** MySQL database username */
//define('DB_USER', 'wp30_anon');
/** MySQL database password */
//define('DB_PASSWORD', '12345');
/** MySQL hostname */
//define('DB_HOST', '127.0.0.1:3306');
require_once(ABSPATH . 'wp-content/plugins/wp-migrate-webhosts/wp-webhosts.php');
register_webhost_defaults(array(
'database' => 'example_db',
'user' => 'example_user',
'password' => '12345',
'host' => 'localhost',
'sitepath' => '', // '' if WordPress is installed in the root
));
register_webhost('dev',array(
'name' => 'Example Local Development',
'host' => '127.0.0.1:3306',
'domain' => 'example.dev',
'rootdir' => '/Users/mikeschinkel/Sites/example/trunk',
));
register_webhost('test',array(
'name' => 'Example Test Server',
'rootdir' => '/home/example/public_html/test',
'domain' => 'test.example.com',
));
register_webhost('stage',array(
'name' => 'Example Staging Server',
'rootdir' => '/home/example/public_html/stage',
'domain' => 'stage.example.com',
));
register_webhost('live',array(
'name' => 'Example Live Site',
'rootdir' => '/home/example/public_html/',
'password' => '%asd59kar12*fr',
'domain' => 'www.example.com',
));
require_once(ABSPATH . 'wp-content/plugins/wp-migrate-webhosts/set-webhost.php');
Semoga ini (sebagian besar) cukup jelas. Saya mencoba untuk membuat kode sebersih yang saya bisa tapi sayangnya itu memerlukan dua require_once()
baris samar sebelum dan sesudah blok kode pendaftaran hosting karena tidak ada cara bagi saya untuk " menghubungkan " WordPress sebelum wp-config.php
dipanggil.
Setelah memperbarui, Anda wp-config.php
cukup menggunakan pintasan URL wp-migrate-webhosts
untuk membuka layar admin seperti:
http://example.com/wp-migrate-webhosts
Di atas akan membawa Anda ke layar admin seperti berikut yang memiliki sedikit adil deskripsi teks dan memungkinkan Anda untuk bermigrasi DARI salah satu domain hosting lain dengan satu klik setelah memilih domain untuk bermigrasi dari ( Catatan : contoh ini menunjukkan akan BAWAH dari test / tahap / server hidup untuk pembangunan daerah tapi yakinlah itu dapat bermigrasi ke setiap domain di mana itu terjadi berada. ini juga berarti plugin akan menjadi besar untuk mengambil situs hidup yang ada dan cepat mendapatkan lingkungan pengembangan lokal yang bekerja! ):
Jika tidak jelas " migrasi " dalam konteks ini berarti memperbarui semua referensi dalam database saat ini agar sesuai untuk hosting yang saat ini didefinisikan (dan " saat ini " diendus dengan memeriksa $_SERVER['SERVER_NAME']
.)
Yang keren tentang plugin ini adalah mengimplementasikan beberapa migrasi dasar tetapi siapa pun dapat mengaitkannya dan melakukan migrasi mereka sendiri . Misalnya, jika Anda menambahkan plugin galeri yang menyimpan path lengkap ke gambar dalam database, Anda bisa mengaitkan migrate_webhosts
tindakan yang akan melewati " dari " webhost dan " ke " webhost masing-masing sebagai array metadata dan Anda akan diizinkan untuk melakukan apa pun yang perlu Anda lakukan dalam database menggunakan SQL atau fungsi API WordPress yang berlaku untuk melakukan migrasi. Ya, ada di antara kita yang bisa melakukan ini tanpa plugin, tetapi tanpa plugin saya menemukan bahwa menulis semua kode yang dibutuhkan lebih banyak upaya daripada nilainya. Dengan plugin ini, lebih mudah untuk menulis kait kecil ini dan menyelesaikannya.
Anda juga dapat menemukan migrasi saya gagal dalam kasus tepi yang belum saya uji dan mungkin Anda dapat membantu saya meningkatkan plugin? Siapa pun yang ingin dapat mengirim email kepada saya melalui akun gmail saya (alias saya adalah "mikeschinkel.")
Juga, plugin dirancang untuk menerima mendefinisikan pengguna metadata hosting selain yang mengakui seperti database
, user
, password
, host
, domain
dll Contoh sempurna mungkin googlemaps_apikey
di mana Anda dapat menyimpan kunci API yang berbeda untuk setiap domain yang Google Map Anda kebutuhan Plugin untuk beroperasi dengan benar (siapa di antara Anda yang telah menggunakan plugin Google Maps belum menyebarkan aplikasi ke server langsung dan lupa mengubah kode ke kunci API yang benar? Ayo, jujur ... :) Dengan plugin ini, sebuah googlemaps_apikey
elemen dalam array register_webhost () Anda dan custom migrate_webhosts
hook kecil Anda dapat secara efektif menghilangkannya sebagai masalah!
Nah itu saja. Saya meluncurkan plugin ini di sini di Pertukaran Jawab WordPress karena pertanyaan @ Insanity5902 yang memicunya. Beri tahu saya jika ini membantu, di sini jika perlu, atau melalui email jika tidak.
PS Jika Anda memutuskan untuk menggunakan ini, ingat ini alfa / beta dan itu artinya akan berubah jadi bersiaplah untuk beberapa operasi kecil jika Anda ingin menggunakannya sekarang dan kemudian gunakan versi yang dirilis setelah dikalahkan oleh banyak tangan.
PPS Apa tujuan saya dengan ini? Saya senang melihat ini bermigrasi ke inti WordPress sehingga semua orang akan memiliki akses ke sana. Tetapi sebelum itu bahkan dapat dianggap banyak orang harus tertarik menggunakannya untuk memastikan itu benar-benar memecahkan lebih banyak masalah maka berpotensi menciptakan. Jadi, jika Anda menyukai ide itu maka gunakanlah dan bantu saya mendapatkan momentum dengannya untuk akhirnya dimasukkan ke dalam inti WordPress.