প্লাগইন ফর্ম জমা সেরা অনুশীলন


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...
}

আমি নিশ্চিত নই যে এতে কী toুকবে তা কী ধরবে, বা ফর্মটি অ্যাকশনটি কোথায় পাঠাবে। সব ধরনের সাহায্য করার জন্য ধন্যবাদ!

-Adam


আপনার কাছে প্রসেস_ফর্ম () এর ভিতরে যুক্তির আরও একটি সম্পূর্ণ উদাহরণ রয়েছে। আপনার ফর্ম জমাটি সঠিকভাবে রুট হয়েছে তা নিশ্চিত করতে আপনি কোন ক্রিয়াকলাপটি ডাকছেন তা জানতে আগ্রহী।
পান্নাজভা

উত্তর:


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();
    } 

}

আপনি সঠিক জায়গা থেকে ডেটা জমা দেওয়া হয়েছে তা নিশ্চিত করার জন্য একটি ননসের জন্যও পরীক্ষা করতে পারেন ...


আমি সেই সমাধানটির খুব কাছে এসেছি কিন্তু টেমপ্লেট_ড্রাইরেক্টের পরিবর্তে আর ডিআই ব্যবহার করছিলাম। আমি পুনঃনির্দেশটি বেশ কার্যকরভাবে ব্যবহার করার কথা ভাবি নি তবে কী ঘটেছে তা বের করার চেষ্টা করার চেয়ে এটি আরও সহজ করে তোলে। আমি ইতিমধ্যে ননসের জন্য যাচাই করছি, কেবলমাত্র সমস্ত জেএস ফর্ম এবং সার্ভারের পাশের ফর্মের বৈধতা পেতে হবে place সহায়তার জন্য ধন্যবাদ, আমি এটির সাথে লড়াই করেছি তবে এটি এখন সার্থক হয়ে উঠছে।
alistek
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.