WP Migrate DB Pro Electricity kullanıcıları için ipuçları
Önyargılı olabileceğimi biliyorum, ancak WP Migrate DB Pro’nun da çok gerekli araçlardan biri olduğunu düşünüyorum ve birçok geliştirici için sadece kullanılmayan bir potansiyele sahip olabilir. Öyleyse saldırıya uğramış şapkalar giyelim ve WP Migrate DB Pro’nun yaratıcı olduğumuzda neler başarabileceği hakkında UI dışında keşfedelim. Hayatınızı değiştiren mucize ile ilgili WordPress kod tabanı hakkında ne istediğinizi söylüyor, ancak bence hepimiz WordPress kanca sisteminin güzel bir şey olduğunu kabul edebiliriz. WP Migrate DB Pro, hem dahili kullanım için hem de genişletilebilirlik ve özelleştirme sağlamak için kapsamlı bir kanca sistemi kullanır. Mevcut kancalarımızın çoğunu belgeleyen faydalı ayar eklentileri topladık, ancak burada bazı belirli örnekler görüntülemek istiyorum.
WPMDB_EXCLUDE_RESIZED_MEDIA Birincisi WPMDB_EXCLUDE_RESISTED_MEDIA filtresidir, eğer tahmin etmediyseniz, medya dosya eklentisi kullanılırken değiştirilen medya dosyalarının geçişini serbest bırakmanıza izin verecektir. Bunu yapmak isteyebileceğiniz birkaç neden var. Belki temalar geliştirdiniz ve birkaç farklı boyut denediniz, medya klasörünüzde çok fazla hasar bıraktınız. Belki yeni bir temaya başvuruyorsunuz ve görüntünün tüm boyutlarını yeniden yaratmayı planlıyorsunuz. Ya da belki de tüm ekstra bant genişliğini kullanmak istemezsiniz. Örneğin, burada siteyi sadece yaklaşık 100 medya dosyasıyla bastırmaya çalışıyorum, ancak otomatik olarak oluşturulan boyutta, taşınması gereken neredeyse 800 gerçek dosyadır. Geçişle ilgili her iki siteye de yüklenmiş kullanılır (çünkü medya karşılaştırmaları konsensüs gerektirdiğinden her iki siteden): add_filter (‘wpmdb_exclude_resized_media’, ‘__rereturn_tue’); WordPress yardımcı __return_tue işlevleri sayesinde, WPMDB_EXCLUDE_RESISTED_Media filtresine doğru geri yüklemek için gereken tek şey budur ve bu kullanılması gereken bir eklenti olduğu için etkinleştirmem bile gerekmez. Çalıştırma Taşıma yine sadece orijinal belgelerin taşındığını gösterir: Şimdi hedef sitemde küçük resim rejenerasyon eklentisini çalıştırabilirim ve tüm resimleri yaklaşık yarım bant genişliği için alıyorum!Küçük resim rejenerasyonunun oldukça zor bir görev olabileceğini ve birçok görüntünüz varsa güç eksikliğiyle ilgili sorunlar yaşayabileceğinizi unutmayın.WPMDB_MIGRATION_COMPLETE Şimdi ne dediğinizi biliyorum: “Uzaktan kumandamı açmamı ve Regenerate Media düğmesini manuel olarak tıklamamı istiyorsunuz?Bu Mezolitik Çağ mı? “Üzgünüm.İyi bir geliştirici işareti, tembellik için aşırı bir eğilimdir ve işlemi otomatikleştirebildiğinizde medya rejenerasyonuna manuel olarak başlamanız beklenemez.Tanrıya şükür bunun için bir eylemimiz var! WPMDB_MIGRATION_COMPLETE eylemi, geçiş tamamlandığında, göçle ilgili her iki sitede de etkinleştirilecektir. Bu nedenle, önceki örnekten devam edin (WP-CLI yüklediğimiz ve ana bilgisayarınızın EXEC kullanmasına izin verdiğimiz varsayılarak), hedef sitede kullanılması gereken eklentiye aşağıdakileri ekleyerek medyayı yeniden üretmeye başlayabiliriz: ‘WPMDB_MIGRATION_COMPLETE’ , ‘rejen_media_migration_complete’, 2, 20); İşlev rejen_media_migration_complete ($ action, $ url) {$ wp = “/yol/to/wp”; // wp-cli komutuna tam yol global $ wp_current_filter; $ is_remote = strstr ($ wp_current_filter [0], ‘nopriv’)? Doğru yanlış; if ((‘push’ == $ aksiyon && $ is_remote) || (‘pull’ == $ eylem &&! $ is_remote)) {exec (“$ wp rejenere medya -yes/dev/null 2>/dev/null & “); }} Her şey doğru çalışırsa, bu, arka plan işleminde WP-CLI Medya Regeneration komutunu gerçekleştirir (tüm saçmalık /dev /null için teşekkür ederiz) ve birkaç dakika verirseniz, asla bilemezsiniz. Boyut göç etmez.
Ek Not: Çalışırken sorun yaşıyorsanız ve MAMP gibi bir şey kullanıyorsanız, belki PHP Exec işlevi standart kabuğunuzdan çok farklı bir ortamda çalıştırılır. WP-CLI komutu yerine kabuk komut dosyasını çalıştırarak bunun üstesinden gelebilirsiniz. Kabuk komut dosyanızda, genellikle çalıştırdığınız kabuğu ve hatta kaynak dosyanızı çalıştırmayı seçebilirsiniz.*RC’niz doğru PHP ve WP yolunu ayarladıysanız. ZSH kullanıyorum, bu yüzden kabuk komut dosyası şöyle görünecek: #!/Bin/zsh kaynak /users/me/.zshrc wp rejenere medya — evet -path =/yol/to/wordpress hileleri wpmdb_migration_complete diğer kullanımı wpmdb_migrasyon_complete tekrar media tecen Oldukça spesifik bir örnek mi, peki ya genel olarak biraz daha yararlı bir şey ne olacak? Bazen geçişin yürürken ne zaman bittiğini bilmek istersiniz, bu yüzden geçiş tamamlandığında aktif olacak basit bir masaüstü bildirimi uygulayıp uygulayamayacağımızı görelim.
Bildirimleri görüntülemek için JavaScript Bildirim API’sını ve WordPress Heartbeat API’sını, geçişin tamamlandığını ön uç için göndermek için kullanabiliriz. WordPress Heartbeat API’sına aşina değilseniz, bu öğreticiyi Pippinsplugins.com’dan görmenizi öneririm çünkü kalp atış hızı kodunun çoğunu burada yaptığım yer burası. İlk olarak, geçişin yeni tamamlandığını söyleyen geçici olanı ayarlamak için wpmdb_migration_complete kancasını kullanabiliriz: add_action (‘wpmdb_migration_complete’, ‘jg_set_complete_transient’, 2, 20); işlev jg_set_complete_transient ($ eylem, $ url) {global $ wp_current_filter; $ is_remote = strstr ($ wp_current_filter [0], ‘nopriv’)? Doğru yanlış; // Yalnızca (! $ IS_REMOTE) {SET_SITE_TRANSIENT (‘WPMDB_MIG_IS_COMPLETE’, True, 500); }} Kalp atışı API, birkaç dakika aktif olmayandan sonra kendini boğduğundan, 500 saniyeden sonra son kullanma için geçişler ayarladım, bu da en uzun kontrolle bile alınacak kadar uzun olmalı, ancak göç arasında sona ermesi için oldukça kısa .
Ardından, kalp atışının çalıştığından ve komut dosyalarımızı altbilgide enqueue yapmasını sağlamalıyız: jg_heartbeat_enqueue ($ hook) {// Kalp atışının JS kısmının yüklendiğinden emin olun. wp_enqueue_script (‘kalp atışı’); Add_action (‘admin_print_footer_scripts’, ‘jg_heartbeat_js’, 20); } Add_action (‘admin_enqueue_scripts’, ‘jg_heartbeat_enqueue’); Ardından, kullanıcı DB Geçirme DB Pro sayfasında ise komut dosyamızı altbilgiye ekleyeceğiz: JG_HEARTBEAT_JS () {// Yalnızca WP Heartbeats’ı çalıştırın (! İsset ($ _GET [‘Page’) | | _Get [‘sayfa’]! = ‘Wp-migrate-db-pro’) {return; }?> (işlev ($) {// kod buraya gidecek} (jQuery)); <? PHP} Ardından, tarayıcının API bildirimini desteklediğinden emin olmak için bloğa birkaç kod ekleyeceğiz ve eğer öyleyse izin isteyin: // Tarayıcı yetenekli değilse devam etmeyin (! (" Bildirim "pencerede))) {return; } // Halihazırda verilmediyse izin alın ('verildi'! == Notification.Permission) {Notification.requestperMission (); } Bundan sonra, ateş kalp atışına dinlediğimizi söyleyeceğiz, bu, arka uçta wpmdb_mig_is_complete geçici olup olmadığını kontrol edecek birkaç kod çalıştırmamızı sağlayacaktır: // kalp atışına takıldığımızda ayarlanıp ayarlanmadığını kontrol edecektir. $ (Belge) .on ('kalp atışı-send', işlev (e, veri) {data ['wpmdb_mig_complete_heartBeat'] = 'check';}); Ve sonra kalp atışı yanıtlarımızı dinlemeye başlayacağız ve alırsak bir bildirim yayınlayacağız:
// $ (belge) üzerinden "Heartbeat-Tick" özel etkinliğini dinleyin. $ (Belge) .on ('kalp atışı-tick', işlev (e, veri) {// bayrak ayarlanmazsa (! Data ['wpmdb_mig_complete_heartbeat']) {return;} // yangın bildirimi ('verildi '=== Notification.Permission) {var nourtion = yeni bildirim ("WP DB PRO MIRGRATION TAMAMLI!", {Body:' Geçişiniz tamamlandı! '});}}); Artık JS ile bitirdiğimize göre, yalnızca geçişin tamamlanıp tamamlanmadığını kontrol etmek ve kendi kalp atışı isteğimize yanıt vermek için bir kod eklememiz gerekir: add_filter ('heartbeat_received', 'jg_heartbeat_received', 10, 2); işlev jg_heartbeat_received ($ yanıt, $ data) {if ('check' == $ veri ['wpmdb_mig_completethe_heartbeat']) {if (get_site_transient ('wpmdb_mig_is_complet') // Bu saati yalnızca Delete_Site_Transient ('WPMDB_MIG_IS_COMPLETE') gönderdiğimizden emin olmak için geçici olarak silin; }} return $ yanıt; } Şimdi, göç tamamlandıktan sonra bir masaüstü bildirimi alacağız! Aslında, bildirim göç bittikten birkaç dakika sonra birkaç dakika sürebilir, çünkü yangın kalp atışı güncellemeler için fronter arka ucuna bağlıdır, ancak yine de yardımcı olmak için yeterlidir. Geçiş ekranından uzakta ve işe geri dönmek için bir hatırlatma gerektiriyor! Aşağıda, değişiklikleriniz veya yüklemeniz için eksiksiz bir kaynak kodu:
Ters Geliştirme Bazen sunucunun ayarlanma şekli, geçişin iyi çalışmasını önleyebilir – hem taleplerimizle tökezleyen güvenlik ayarları hem de talebin izin verilen seviyelerini veya büyüklüğünü kontrol eden ayarlar, WP’nin teşvik için DB Pro transfer verilerini taşıma şekliyle eşleşmez istekler. Sizi itmekten biraz daha zor olmanın nedeniyle sıkılmayacağım, ancak göçünüzü hedeflerinize itmek yerine hedeflerinize çekebiliyorsanız, işleri genellikle kolaylaştırır. İki sitenize halk tarafından erişilebilirse, bu yapmak kolay bir geçiştir. Ancak, doğrudan yerel bir geliştirme sitesinden siteye geçmeye çalışırsanız, o zaman bir seçenek değil … değil mi? NGROK – Comboo Komutları/Küçük Hizmetler girin ve siteye yerel olarak hızlı ve kolay bir şekilde kiralanan güvenli bir tünel yapmanızı sağlayın. Genel olarak, ngrok, WordPress ile çalışmak biraz zahmetlidir, çünkü URL veya başlığı (Apache Proxy modülü gibi) yeniden yazmaz, bu nedenle her şeyin çalışması için göreli URL’leri kullanmanız gerekir. Bu, taşınma db Pro’yu geçiş için bir sorun değildir, çünkü URL’yi yalnızca admin-ajax.php dosyasına doğrudan erişmemiz gerekir ve wp db pro, URL bilgilerini uzun mesafeli site URL’si hakkında Site veritabanından değil, sadece yerine alın Bağlantı URL’sinden sonuçlandırma. Başlayalım!
İlk olarak, ngrok’u indirmek ve zip indirdiğiniz her yerde CLI’nizi açmak istersiniz. Sonra onu çıkarmak, yürütme izni vermek ve klasörünüze/usr/bin’e taşımak istersiniz, böylece tüm yolu belirlemek zorunda kalmadan herhangi bir yerden çalıştırabilirsiniz: $ CD/Kullanıcılar/Me/İndirmeler $ Unzip ngrok- stabil-darwin-amd64.zip #fileName $ chmod +x ngrok $ mv ngrok /usr /bin değişebilir Her şey plana göre giderse, $ ngrok -v çalıştırabilir ve ngrok sürüm 2.1.3’e benzer bir çıktı alabilirsin . Şimdi, Deliciousbrains.dev’de çalışan yerel sitelerden içeriği aşamalı siteleri yönlendirmek istiyorum. İlk olarak, gitmek istediğim sanal ana bilgisayarı belirlemek için -host -neverer = yeniden yazma seçeneğini kullanarak ngrok başlatacağım: $ ngrok http -host -header = Deliciousbrains.dev:80 Terminal ekranınızı bir ekran gibi üretecek Bu: Şimdi, Deliciousbrains.dev: https://delicioNbrains.dev/wp 50vdutdureawujaoKeKspelt+6mr9s4ir/qfrlm’den DB Pro Migrate bağlantısı hakkında bilgi alabilirim ve sadece ev sahibi adını sadece adla verilen ev sahibi adıyla değiştireceğim Ana bilgisayar adıyla verilen ana bilgisayardan https://fc4fba3c.ngrok.io/wp 50vdutdureawuooekspelt+6mr9s4ir/qfrlm Bu yeni bağlantı bilgilerini kullanarak, yerel siteme internete erişimi olan herhangi bir sunucudan bağlanabilirim, bağımsız olarak sunucunun ağıma erişimi olup olmadığı.