Uygulamada WP CRON: Örnek wp_schedule_event + diğer

Birkaç hafta önce “Cron’un çalışması” nın WordPress vb. “WordPress Programlı Görev” ile ilgili öğretici, umarım onunla yapabileceğiniz bazı şeyleri iyi bir şekilde anlamanızı sağlar. Bugün gerçekten yapmak için wp_schedule_event nasıl kullanacağınıza odaklanacağız. Yani, Cron WordPress çalışmasının bir dizi örneğini tartışacağız. Yüksek düzeyde, bu, wp_schedule_event’in işlevini anlayacağımız ve WordPress eklentisinde WP-CRON kullanmak için onu nasıl kullanabileceğimizi ve diğer bazı yararlı işlevleri göreceğimiz anlamına gelir. Ayrıca, WordPress için planlanan görevinizin çalışıp çalışmadığını/ne zaman çalışacağını bulmak için çok yararlı olan WP CRON eklentisini kısaca göreceğiz. Haydi Yapalım şunu.
Eklentiler için WP CRON anlayışımızı yenilemek (& daha fazlası)

Kısa bir inceleme olan Cron WordPress örneğine girmeden önce. Genel sınıfa bilgisayar odasında “Cron” hakkında “planlama çağrısı işlevini tamamlama” diyoruz. Bu nedenle, üyelerinin işlevi “planlanan” WordPress etkinliğini ifade etmesine rağmen, WordPress Zamanlama Sistemini “WP-CRON” olarak adlandıran kişileri sık sık görüyoruz. Aynı şey hakkında her şey: WordPress sitesinde gerçekleşen planlanmış şeyler. Bunun gerçekleşmesine yardımcı olmak için, mevcut wpsout’ta wp_schedule_event kullanan bazı şeyler:
WordPress (Core) artık kaydedilmemesi gereken bir gönderiden otomatik taslağı temizliyor
Jetpack, geçici (geçici önbellek değişkeni) WordPress’ten daha agresif bir programda temizler.
WordPress (çekirdek) Temizleme Transienyoast SEO bir şey planlıyor (ne emin değilim) onpage_fetch’i her hafta çalıştırmaya çağırıyor
Updrraft Plus rezervleri Dropbox’a çalıştırıyor
Devam edebilir veya diğer birçok benzer şeyden bahsedebilirim. Bence kendi wp_schedule_eventinize ne zaman ve neden ulaşmak isteyebileceğinizi düşünmeye başlıyor. Öyleyse başlayalım, bu işlevi ve diğerlerini WordPress’te çalışan görevleri planlamak için nasıl kullandığınızı.
Cron Hook Main WordPress: WP_Schedule_Event Yani önce WP_Schedule_Event’ten işlevin imzasını anlayarak “WP cron işi” nin nasıl yapılacağını anlamaya başlayacağız. Görünüşe göre: wp_schedule_event ($ zaman damgası, $ nüks, $ kanca, $ args); Yani, parametreler daha ayrıntılı:
$ zaman damgası, etkinliğin ilk kez olmasını istediğiniz zamandır. Yani burada sunulan en yaygın değer mevcut zamandır. Time () işleviyle PHP’de alırsınız.
$ nüks, etkinliğin çalıştırılmasını istediğinizde söyleyen bir dize değeridir. Varsayılan olarak WordPress, günde veya günlük saatlik, twicedacy değerini bekler. Yakında göstereceğimiz gibi, kayıtlı bir WP_Schedule_Event etkinliği üçünden farklı bir programda çalıştırabilirsiniz, ancak bu şimdiye kadar en yaygın olanıdır.
$ Hook, etkinliğiniz çalışırken WordPress tarafından çağrılmak istediğiniz işlev (ad) olacaktır. Bu, işlevinize updraft_backup olarak adlandırılan ‘Updraft_backup’ gibi bir dize.
$ args, $ kanca işlevinizin çağrıldığında görülmesi gerektiği argümanıdır. Hiç kullanmadım ve herhangi bir örnekte görmeyeceğiz, ancak bunun üstesinden gelebileceğinizi bilmek güzel. WP_Schedule_Event’i her gün yapmak, WP_Schedule_Event’i nasıl arayacağınızı anladıktan sonra işlevlerinizi çalıştırıyor, bağlamda nasıl bakalım bakalım İşlevlerimizi planlamak için her gün çalıştırmak için WPSHOUT_DO_THING adlı adlandırılmıştır. Bir eklentide, şöyle görünebilir:
register_activation_hook (__file__, ‘wspout_plugin_activation’); İşlev wspout_plugin_activation () {if (! Wp_next_scheduled (‘wphout_do_thing’)) {wp_schedule_event (time (), ‘günlük’, ‘wphout_do_thing’); }} Şimdi, wp_schedule_event’i birçok şekilde çağıran kodunuzu çalıştırabilirsiniz. Ancak en iyilerinden biri, etkinleştirilmiş eklenti gibi etkinliğe bir kez bağlamaktır. Burada yaptığımız şey bu. Sonra bizim için etkinliğin planlanmamasını sağlıyoruz. Daha sonra daha ayrıntılı olarak tartışacağız, ancak bu sadece birisi nedeniyle etkinliğinizi bir süre farklı çalıştırmadığınızdan emin olmak için iyi bir uygulamadır, örneğin, eklentinizi deneyin ve aşırı derecede devre dışı bırakın.
Kendinizden sonra temizleyin: WP_CLEAR_SCHEDULED_HOOK Planlanmış görevinizin köklendirme yolunu etkinleştirilmiş eklentiye aldıysanız, eklentiniz kapatılırsa (devre dışı bırakılır) görevinizin hatalara neden olmadığından emin olmak isteyebilirsiniz.Bunu yapmak için, eklentiyi devre dışı bıraktıklarında planlanan etkinliğinizi silebilirsiniz.Gibi görünecek: register_deactivation_hook (__file__, ‘wspspout_plugin_deactivation’);İşlev wspout_plugin_deactivation () {wp_clear_scheduled_hook (‘wspout_do_thing’);} Beklediğiniz gibi, wp_clear_schedule_hook yalnızca WP_Schedule_Event’i aramanız planladığınız $ kanca kaydını veya “atama adını” iptal eder.
wp_schedule_event her gün belirli bir zamanda web sitenizin en az trafiği sabah 3’te aldığını söyleyin. Yani ilk eklenti etkinleştirildiğinde değil, belirli bir zamanda yedeklemenizi istersiniz. WP_SCHEDULE_EVENT kodu örneğinde, sunucunuzda 03. AM’yi hedefleyeceğiz. Ben şöyle yapacağım: wp_schedule_event (strtotime (‘yarın 3 am’), ‘günlük’, ‘wspout_do_ting’); PHP Strtotime işlevi “bu dize zamanı yapmak” anlamına gelir. Bu, zamanla aynı değeri geri yükler, ancak daha fazla İngilizce ifadesi kullanalım. Yani bu ilk görev yarın sabah sabah saat 3’te gerçekleştirilecek ve şimdi değil. Ve sonra, ‘günlük’ olarak $ frekans ayarladığımız için, her gün saat 3’te tekrarlamaya devam edecek. Dikkate alınması gereken zayıf yönler: Kullanıcınızın yakında olmasını istiyorsa/istiyorsa, başka sistemlerin de onlar için yapmasını istersiniz. Wp_schedule_single_event şeklinde olabilir. Ama oraya varmadan önce diğer örnekleri tartışmak istiyorum … her dakika wp_schedule_event, bu yüzden wp-cron birkaç çok yararlı varsayılan aralıklara sahip, ancak “her dakika” sunduğu şey değil. Bunun için birçok nedeni vardır. Özellikle bu ikisi:
Her dakika çalıştırmak sunucunuza çok fazla ek yük ekleyebilir.
Her dakika iş yapmak, WP-Cron’u düşük trafiğe sahip siteler için biraz güvenilmez hale getiren ziyaretlerin ihtiyaçlarına aykırıdır. Planlanan WordPress görevi için tanıtımımda bunun hakkında daha fazla konuştum.
Bu nedenle, kutunun dışındaki cron aralıkları için WordPress tarafından desteklenmeyen “her dakika” veya diğer aralıkları istemenizin bir nedeni olabilir. Kendinizi bu durumda bulursanız, bu örnek kod yardımcı olacaktır. İlk olarak, aralığınızı bildirmeniz gerekir: add_filter (‘cron_schedules’, ‘wspspout_add_cron_interval’); İşlev wspspout_add_cron_interval ($ schedules) {$ schedules [‘everyminute’] = dizi (‘aralık’ => 60, // saniye ‘ekran’ => ‘her dakika’); Dönüş $ programı; } Yani burada Cron_schedules WordPress filtre kancası bize bildiği aralık dizisini verir. Ve aralıklarımızla iletilen diziye ekledik, bu durumda Everyminute adını verdim. Sonra sadece wp_schedule_event kullanırız, aralığımızın, her zamanın orada olduğunu bilerek (günlük stokla aynı):
wp_schedule_event (time (), ‘EveryMinute’, ‘wspspout_do_ting’); Bu sistem tam olarak her türlü özel aralıkta görüldüğü gibidir. Gerçekten bir maymun kaosuysanız, bunu bile yapabilirsiniz (tavsiye etmiyorum): add_filter (‘cron_schedules’, ‘wspout_add_weird_cron_interval’); İşlev wspspout_add_weird_cron_interval ($ schedules) {$ schedules [‘wpshout_random’] = dizi (‘aralık’ => rand (100, 9999999), // saniye ‘ekran’ => ‘rastgele aralık’); Dönüş $ programı; } Ancak bu, Cron WordPress programınızda kaos yapacak, bu yüzden tavsiye etmiyorum.
WP Cron çalışmıyor: Daha önce söylediğim bazı kavramsal hazırlıklar ve tekrar söyleyeceğim: WP-CRON “orijinal” cron değil. Bu, sitenizin planladığınız işlevi çalıştırabilecek WordPress’i ziyaret etmesini gerektirir. Bunun için, WP-Cron beklediğiniz gibi çalışmazsa, “Cron WordPress’i gerçek bir cron yapmanız” gerekebilir. Bu küçük site alanı öğreticisine iyi dahil olduğu gibi. Başka bir güç, WordPress’te bir kez nasıl planlıyorum? Şimdiye kadar WP Cron’un bir dizi ana işlevinden bahsettik, ancak daha derinden bilmeniz gereken veya bilmeniz gereken diğer işlevleri hemen yerine getirmek istiyorum. Wp_schedule_single_event nedir? Bazen planlanan etkinliğinizin veya kodunuzun yalnızca bir kez olmasını ve “şimdi değil” olmasını istersiniz. Peki WordPress’te bir kez çalışacak bir şey nasıl planlıyorsunuz? Bunun için wp_schedule_single_event adlı bir işlev var. Beklediğiniz gibi, bu yanlış “WordPress Cron çalışması” yapmanızı sağlar. Beklediğiniz gibi, bu wp_schedule_event’e çok benzer. wp_schedule_single_event şuna benzer: wp_schedule_single_event (strtotime (‘yarın 3 am’), ‘wspout_do_thing’); WP_Schedule_Single_Event için Örnek Kodunun tanıdık göründüğünü göreceksiniz. Farklı olan nedir? “Tekrar aralığı” yı kaybettik
Wp_schedule_event’te göreceğiniz ikisi. Bu çok makul, çünkü işlev adına _single_, $ aralığının gerçekten mantıklı olmadığını açıkça ortaya koyuyor. Ayrıca, WP_Schedule_Event ve WP_Schedule_Single_Event örnek kodunda her şey çok benzer. Disable_wp_cron? Öyleyse, sayfa yayınlandığında WordPress’in “Cron Jobs” WordPress’i asla çalıştırmasını istediğinizi söyleyin? Sabit disable_wp_cron girdi. Yaptığı şey, Site Cron’un görevini doğrudan çağrılarla (kıvrımlı, tarayıcı vb.) Örnek.com/wp-cron.php’ye yapmanıza izin vermektir, ancak bu asla olmayacağı anlamına gelir. Sayfa yüklemesine cron çalışması ekleyin. Bu, Big Cron görevi tarafından yakalanabilecek sayfa yanıtını çok daha hızlı hale getirecektir. Kullanmak için bir tanımlama (‘disable_wp_cron’, true) koyacaksınız; WP-Config.php. Ama WordPress’in Cron işini yapabilmesi için başka yollar bulamadığınız sürece bunu yapmayın. Cron’u devre dışı bıraktıysanız ve bunu telafi etmek için gerçek bir CRON görevi (UNIX’te vb.) Yapmazsanız, planlanan görevler WordPress sitenizde çalışmaz. WP_NEXT_SCHEDULED tarafından yapılanlar önceden bahsettik, ancak wp_next_scheduled özeti için WordPress adını vermenin bir yoludur ve bize görevin daha sonra gerçekleştirilip gerçekleştirilmeyeceğini söyleyebilir. Bu, bizim için planlanan başkaları olduğunda yeni etkinlikler planlamamamız için çok yararlıdır. Bu yüzden wp_schedule_event kullanmanın ideal yolumuz şöyledir: register_activation_hook (__file__, ‘wspout_plugin_activation’);

İşlev wspout_plugin_activation () {if (! Wp_next_scheduled (‘wphout_do_thing’)) {wp_schedule_event (time (), ‘günlük’, ‘wphout_do_thing’); }} (Yukarıdaki WP-Cron kod parçaları eskisi ile aynı olduğu için, ayrıntılı olarak açıklamayacağım.) WP_Next_Schededed’in bize görevi yerine getirmek için zaman (Unix Epoch) zaman vereceğine dikkat edilmelidir. Böylece şöyle bir şey yapmak için de kullanabilirsiniz: $ saniye_until_task_will_run = wp_next_scheduled (‘wspout_do_ting’) – time (); Şimdi wpshout_do_thing planlanmıyorsa negatif bir değer elde edebilirsiniz. Ama bunu yapmanın nedenlerinden bazılarını görebiliyorum. Bir kez daha, yapılacak şey, bir sonraki görevinizin planlandığı (1 Ocak 1970’den bu yana saniye cinsinden), ardından mevcut saati azaltmasıdır. WP_CLEAR_SCHEDULED_HOOK hakkında yukarıdaki gibi, küçük bir wp_clear_scheduled_hook tartıştık. Kısacası, kendinizi ve WordPress Cron eklenti görevinizi temizlediğiniz yol budur. Böylece yukarıdan ilgili kod snippet’i: register_deacivation_hook (__file__, ‘wspout_plugin_deactivation’); İşlev wspout_plugin_deactivation () {wp_clear_scheduled_hook (‘wspout_do_thing’);

admin

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir