नई पोस्ट बनाते समय save_post एक्शन फायर क्यों करता है?


31

मैं इस तथ्य से आश्चर्यचकित हूं कि मेरे कार्य जो मैंने save_postएक्शन फायर से लिए हैं, जब मैं एडमिन डैशबोर्ड में "नई पोस्ट" लिंक पर क्लिक करता हूं। नोट - यह मेरे द्वारा दबाए जाने से पहले है , Saveया Updateयह तुरंत समाप्त हो गया है, एक बीता समय या ऑटो-अपडेट के बाद नहीं।

दूसरी तरफ, जब मैं कुछ टाइप करता हूं और Publishया Updateया Save Draftबटन दबाता हूं, तो मैंने अपने एक्शन हैंडलर के अंदर जो इको स्टेटमेंट डाला है, वह इको आउट नहीं होता है, इसलिए ऐसा प्रतीत होता है कि एक्शन किसी अन्य समय में फायरिंग नहीं है। यह असंबंधित हो सकता है।

यहाँ मेरा कोड है:

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

जब मैं "नई पोस्ट" लिंक को दबाता हूं तो यह हाँ (पृष्ठ के शीर्ष पर) गूँजता है लेकिन जब मैं कुछ टाइप करता हूँ और तब प्रेस Updateया Publishया नहीं करता है Save Draft। यह save_postकार्रवाई और wp_insert_post()फ़ंक्शन पर दस्तावेज़ीकरण का विरोध करता है।

किसी को भी यह मेरे लिए स्पष्ट कर सकते हैं?


बहुत बढ़िया!!! मैं उसी स्थिति में चल रहा हूं जब कस्टम मेटाबॉक्‍स फ़ील्ड सहेज रहा हूं। किसी भी विचार मैं क्या उपयोग कर सकते हैं ??
प्रातः नादराजा

जवाबों:


39

जब आप 'नई पोस्ट' पर क्लिक करते हैं, तो आप केवल पृष्ठ लोड कर रहे हैं wp-admin/post-new.php

ऐसा करने पर, वर्डप्रेस हमेशा एक नई पोस्ट (एक 'ऑटो ड्राफ्ट') बनाएगा ताकि अन्य सभी सुविधाओं (जैसे मीडिया अपलोड) और प्लगइन्स सामान्य रूप से काम कर सकें, इससे पहले कि आप वास्तव में एक ड्राफ्ट को बचाएं या पोस्ट प्रकाशित करें।

और यह, बदले में, ट्रिगर करता है save_post। इसलिए आपकी प्रतिध्वनि

ठीक है, तो मुझे अपडेट या प्रकाशित करते समय एक गूंज क्यों नहीं आती?

सहेजने और निम्न पृष्ठ लोड करने के बीच, वर्डप्रेस वास्तव GETमें उसी पृष्ठ पर वापस रीडायरेक्ट भेज रहा है , जो पारदर्शी दिखाई देता है (आप इसे HTTP मॉनिटर, जैसे कि HttpFox ) के साथ देख सकते हैं ।

दूसरे शब्दों में;

  1. आप क्लिक करें UpdateयाPublish
  2. ब्राउज़र सर्वर को डेटा भेजता है
  3. वर्डप्रेस इसे संभालता है, और इस प्रक्रिया में ट्रिगर होता है save_post
  4. किसी भी ब्राउज़र आउटपुट के घटित होने से पहले (आपके ईको सहित) वर्डप्रेस एक रीडायरेक्शन हेडर को वापस भेजता है, *
  5. ब्राउज़र पुनर्निर्देशन का पालन करता है और 'पोस्ट संपादित करें' पृष्ठ को लोड करता है।

रीडायरेक्ट अनावश्यक लग सकता है (चूंकि आप केवल POSTउसी पृष्ठ पर जा सकते हैं), लेकिन यह एक ऐसी तकनीक का हिस्सा है जिसे पोस्ट / रीडायरेक्ट / डुप्लिकेट फॉर्म से बचने के लिए जाना जाता है ।

यदि आप हुक किए गए फ़ंक्शन के परिणाम के आधार पर कस्टम संदेश प्रिंट करने का प्रयास कर रहे हैं save_post, तो इन प्रश्नों / उत्तरों की जांच करें ।

* कड़ाई से सच नहीं है, आपकी प्रतिध्वनि वास्तव में रीडायरेक्ट हेडर भेजे जाने से पहले होगी, लेकिन ब्राउज़र या तो इसे त्याग देगा, या चीजें इतनी जल्दी हो जाएंगी कि कभी इसका प्रतिपादन नहीं होगा।


बकाया। इस तरह के एक पूर्ण और विस्तृत जवाब के लिए धन्यवाद! अधिक सीखने के हित में, आपको यह ज्ञान कैसे हुआ?
टॉम ऑगर

उसी निराशा के माध्यम से जो आप अनुभव कर रहे थे;) एक अच्छी IDE पकड़ें (मैं phpDesigner का उपयोग करता हूं) और संबंधित व्यवस्थापक फाइल (फाइलों) में केवल डिलीट करें।
TheDeadMedic

1
भाई पर अधिकार। आपकी विशेषज्ञता के साथ वहाँ रहने के लिए धन्यवाद!
टॉम ऑर्नर

बहुत बढ़िया जानकारी का टुकड़ा। मैं पागल हो रहा था क्योंकि मेरे स्थानीय सर्वर में यह "ठीक" काम करने के लिए लग रहा था, लेकिन मेरे प्रोडक्शन सर्वर में नहीं ... मेरे स्थानीय सर्वर में ऐसा लग रहा है कि यह पोस्ट को रीडायरेक्ट नहीं कर रहा था / ठीक से तकनीक प्राप्त नहीं कर रहा था क्योंकि यह नहीं था रीडायरेक्ट हेडर भेजना (पता नहीं क्यों हालांकि)।
WebMacheter
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.