प्लगइन फॉर्म सबमिशन बेस्ट प्रैक्टिस


16

मैंने बहुत शोध किया है और मुझे जो मिला है वह मुझे नहीं मिला, इसलिए मैं उम्मीद कर रहा हूं कि मुझे सही दिशा में इंगित किया जा सकता है।

मैं एक ईवेंट प्लगइन विकसित कर रहा हूं जो फ्रंटएंड से टिकट बुक करेगा। यह किसी भी अन्य फॉर्म सबमिशन से अलग नहीं है, लेकिन जो मैं भ्रमित हो रहा हूं, वह यह है कि ओओपी के माध्यम से क्लास के साथ लिखे गए प्लगइन से कैसे निपटें।

अधिकांश लेख जो मुझे मिले, उन्होंने टेम्पलेट पृष्ठ के भीतर $ _POST से निपटने के लिए कहा। आदर्श रूप से मैं इस प्लगइन के भीतर एक समारोह द्वारा नियंत्रित किया जाना चाहते हैं।

दूसरी बात जिस पर मुझे यकीन नहीं है कि जब आप फ्रंटेंड पर फॉर्म जमा करते हैं, तो वास्तव में बैकएंड पर फ़ंक्शन को कैसे पास किया जाता है। मैं किसी भी टेम्प्लेट विवरण से फ़ॉर्म प्रसंस्करण को पूरी तरह से अमूर्त करने की उम्मीद कर रहा हूं।

// events.php
if ( ! class_exists( 'Events' ) ) {

    Class Events {
        function __construct() {
            add_action( 'plugins_loaded', array( &$this, 'includes' ), 1 );
        }

        function includes() {
            require_once( EVENTS_INCLUDES . 'functions.php' );
        }
    }
}

if ( class_exists( 'Events' ) ) {
    $events_load = New Events();
}


// functions.php
function process_form() {
    ...do form processing here...

    ...insert booking...
}

मुझे यकीन नहीं है कि इसमें क्या हुक होगा जो पकड़ लेगा, या जहां प्रपत्र कार्रवाई भी भेज सकता है। पूरी सहायताके लिए शुक्रिया!

-Adam


क्या आपके पास process_form () के अंदर तर्क का अधिक पूर्ण उदाहरण है। मुझे यह जानने में दिलचस्पी है कि आपके फ़ॉर्म सबमिट करने को सुनिश्चित करने के लिए आप किस क्रिया को कॉल करते हैं, सही तरीके से रूट किया गया है।
पन्नाध्वज

जवाबों:


8

फ़ॉर्म क्रिया को अपने मुखपृष्ठ पर, या किसी विशिष्ट पृष्ठ URL पर भेजें। आपके पास टेम्पलेट के भीतर $ _POST हैंडलिंग नहीं हो सकती है क्योंकि आपको इसे अपनी प्रक्रिया के बाद पुनर्निर्देशित करने की आवश्यकता है, और किसी भी HTML आउटपुट से पहले पुनर्निर्देशित करने की आवश्यकता है।

// you should choose the appropriate tag here
// template_redirect is fired just before any html output
// see - http://codex.wordpress.org/Plugin_API/Action_Reference
add_action('template_redirect', 'check_for_event_submissions');

function check_for_event_submissions(){
  if(isset($_POST['event'])) // && (get_query_var('pagename') === 'events) 
    {
       // process your data here, you'll use wp_insert_post() I assume

       wp_redirect($_POST['redirect_url']); // add a hidden input with get_permalink()
       die();
    } 

}

तुम भी एक के लिए जांच कर सकता है अस्थायी रूप से सुनिश्चित करें कि डेटा सही जगह से प्रस्तुत की गई थी बनाने के लिए ...


मैं उस समाधान के बहुत करीब आ गया था, लेकिन template_redirect के बजाय init का उपयोग कर रहा था। मैं उस तरह से पुनर्निर्देशन का उपयोग करने के बारे में नहीं सोचता था, लेकिन यह जो हुआ था उसे जानने की कोशिश करने की तुलना में इसे और अधिक सरल बनाता है। मैं पहले से ही नॉन की जांच कर रहा हूं, बस सभी जेएस फॉर्म और सर्वर साइड फॉर्म वैरिफिकेशन प्राप्त करना है। मदद के लिए धन्यवाद, मैं इसके साथ संघर्ष किया था लेकिन यह अब समझ में आ रहा है।
एलिस्टेक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.