Salah satu cara yang memungkinkan untuk melakukan modifikasi data ini adalah dengan menggunakan WP-CLI pada terminal.
Pertama-tama, Anda harus memastikan Anda memiliki cadangan dan strategi pemulihan yang solid jika terjadi kesalahan. Anda juga harus menguji prosedur ini di sistem lokal atau pengujian dengan salinan database langsung.
Langkah dasarnya adalah, untuk mengulangi setiap situs jaringan Anda dan mengganti URL setiap situs menggunakan search-replaceperintah WP-CLI .
Inilah bash one-liner:
for SITE in $(wp site list --field=url); do wp search-replace "{$SITE}" "${SITE/http:/https:}" --dry-run --precise --network --verbose; done
Mari kita periksa:
for SITE in $(wp site list --field=url);
Yang satu mulai loop untuk setiap baris output dari perintah di dalam $()dan menulis setiap baris dalam variabel $SITE.
$(wp site list --field=url)
Itulah WP-CLI site listperintah yang memberi Anda daftar semua URL situs dalam jaringan Anda. Jalankan perintah ini semata-mata, Anda mungkin akan melihat sesuatu seperti:
http://your-site.tld/
http://your-site.tld/site2/
http://another-of.your-site.tld/
...
Sekarang
...); do
hanya akan memulai bagian loop dalam.
Perintah inner loop melakukan semua keajaiban (saya membaginya menjadi dua baris menggunakan \agar mudah dibaca):
wp search-replace "$SITE" "${SITE/http:/https:}" \
--dry-run --precise --network --verbose
Kami memberitahu WP-CLI untuk mencari untuk $SITE(misalnya https://your-site.tld/) dan menggantinya dengan versi yang sedikit dimodifikasi: ${SITE/http:/https:}. Ini adalah pesta Menggantikan tali operasi yang menggantikan http:dengan https:. (Jadi menyelesaikan variabel, perintahnya akan terlihat seperti wp search-replace "http://your-site.tdl/" "https://your-site.tld/").
search-replacememiliki banyak opsi yang mungkin dijelaskan dalam dokumentasi . Dalam contoh saya menggunakan ini:
--dry-run --precise --network --verbose
--dry-rundan --verbosejelas membantu untuk menguji perintah.
--network berlaku pencarian dan ganti operasi juga ke tabel jaringan.
--precisememberitahu WP-CLI untuk menggunakan PHP dan bukannya SQL untuk mencari dan mengganti nilai. Itu memastikan nilai serial untuk tidak rusak.
Akhirnya loop ditutup dengan
; done
Biarkan saya menekankan lagi: menguji ini sebelum Anda mulai menggunakan ini pada produksi. Anda harus memahami cara kerjanya dan apa yang dilakukan WP-CLI. Saya menggunakan WP-CLI sebelumnya untuk melakukan searach tersebut dan mengganti operasi untuk memigrasi multisite ke nama domain lain, tetapi tidak untuk beralih dari httpke https.
Mungkin ada beberapa kasus tepi: WP-CLI masih membaca wp-config.phpdan mencoba menemukan «jaringan» yang cocok dalam database dengan menggunakan konstanta di wp-config.php. Jika Anda memanipulasi satu situs (basis data) tetapi bukan yang lain (konstanta di wp-config.php) Anda mungkin mendapat masalah. Tetapi untuk kasus Anda, saya pikir itu tidak akan menjadi masalah karena WP biasanya mengandalkan DOMAIN_CURRENT_SITEdan PATH_CURRENT_SITEdan mereka tidak akan berubah pula. Tetapi sekali lagi, uji ini menyeluruh.
Dengan sedikit sihir bash, Anda juga dapat membagi lingkaran ini menjadi potongan-potongan 5 atau 10 situs dan melewatinya langkah demi langkah.