Yeni bir yazı oluştururken save_post eylemi neden tetikleniyor?


31

save_postYönetici Panosunda "Yeni Yazı" bağlantısını tıkladığımda, eylemi takip ettiğim fonksiyonumun patlaması beni şaşırttı . Not - Bu, basılmadan önce Saveveya Update, ve geçen bir süre veya otomatik güncelleme sonrasında değil, hemen ateşlenir.

Öte yandan, daha sonra bir şeyler yazıp ve Publishveya Updateveya Save Draftdüğmelerine bastığımda, eylem işleyicimin içine koyduğum yankı ifadesi yanmıyor, bu nedenle eylemin başka bir zamanda başlatılmadığı anlaşılıyor. Bu ilgisiz olabilir.

İşte kodum:

add_action('save_post', 'MyNS\save_event_metabox', 10, 2);
function save_event_metabox($post_id, $post){
  echo "<h1>YES!</h1>";
}

Bu "YES" bağlantısına bastığımda YES (sayfanın en üstünde) yankılanıyor ancak bir şey yazdığımda yankılanmıyor ve ardından Updateveya Publishveya tuşuna basın Save Draft. Bu, save_posteylem ve wp_insert_post()işlev hakkındaki belgelere aykırı görünüyor .

Birisi bunu benim için temizleyebilir mi?


Müthiş !!! Özel metabox alanları kaydederken aynı duruma çalışıyorum. ne kullanabilirim herhangi bir fikir?
Prasath Nadarajah

Yanıtlar:


39

'Yeni Gönderi'yi tıkladığınızda, sadece sayfayı yüklüyorsunuz wp-admin/post-new.php.

Bunu yaparken, WordPress daima önce bile, normal olarak tüm diğer (örneğin medya yüklemeler gibi) özellikleri ve eklentileri çalışmasını sağlamak üzere yeni bir yayın (bir 'Otomatik Taslak') yaratacaktır size bir taslak kaydetme gerçekten veya yayınla.

Ve bu, sırayla, tetikler save_post. Bu yüzden yankınız.

Tamam, peki güncellerken veya yayınlarken neden yankı almıyorum?

Kaydetme ve bir sonraki sayfa yükleme arasında, WordPress aslında GETaynı sayfaya geri yönlendiriyor, saydam görünüyor (buna HttpFox gibi bir HTTP monitörüyle tanık olabilirsiniz ).

Diğer bir deyişle;

  1. Tıklayın UpdateveyaPublish
  2. Tarayıcı sunucuya veri gönderir
  3. WordPress bunu yönetir ve işlem sırasında tetikleyiciler save_post
  4. WordPress, bir yeniden yönlendirme başlığı geri gönderir ve herhangi bir tarayıcı çıktısı olmadan önce çıkar (eko'nuz dahil) *
  5. Tarayıcı, yeniden yönlendirmeyi izler ve 'yazıyı düzenle' sayfasını yükler.

Yönlendirme gereksiz görünebilir (çünkü yalnızca POSTaynı sayfaya gidebilirsiniz ), ancak yinelenen form gönderimlerinden kaçınılmasıyla Post / Redirect / Get adı verilen bir tekniğin parçasıdır .

Bağlantılı bir işlevin sonucuna dayanarak özel mesajlar basmaya çalışıyorsanız save_post, bu soruları / cevapları inceleyin .

* Kesinlikle doğru değil, aslında yankı yönlendirme başlığı gönderilmeden önce gerçekleşir, ancak tarayıcı onu alamaz veya işler o kadar çabuk gerçekleşmez.


Olağanüstü. Böyle eksiksiz ve ayrıntılı bir cevap için teşekkür ederiz! Daha fazla öğrenmenin yararına, ilk başta bu bilgilere nasıl rastladınız?
Tom Auger

Yaşadığınız aynı hayal kırıklığı sayesinde;) İyi bir IDE elde edin (phpDesigner kullanıyorum) ve sadece ilgili yönetici dosyalarına dalın.
TheDeadMedic

1
Tam kardeşimde. Uzmanlığınızla orada olduğunuz için teşekkür ederiz!
Tom Auger

Müthiş bilgi. Çıldırıyordum çünkü yerel sunucumda "tamam" gibi görünüyordu, ancak üretim sunucumda görünmüyordu ... yerel sunucumda gibi görünüyordu çünkü post / redirect / get tekniğini düzgün uygulamıyordu. yönlendirme başlığını gönderme (neden olsa bilmiyorum).
WebMacheter
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.