কীভাবে ফর্ম জমা দেওয়ার ব্যবস্থা করবেন?


13

আমি ওয়ার্ডপ্রেসে নতুন এবং তাই কিছু সমস্যার মুখোমুখি।

ব্যবহারের পরিস্থিতি নিম্নরূপ:

  1. একজন ব্যবহারকারী তার স্কুলে একটি ক্লাব শুরু করতে একটি আবেদন ফর্ম প্রদর্শিত হয়।
  2. ব্যবহারকারী ফর্মটি পূরণ করে এবং 'জমা দিন' বোতামটি হিট করে।
  3. ফর্মটি যাচাই করা দরকার।
  4. যদি বৈধতা সফল হয়, তবে club_detailsডেবিটি কাস্টম টেবিলে ডিবিতে সংরক্ষণ করা হয় এবং ব্যবহারকারীর কিছু বার্তা প্রদর্শিত হয় (উদাহরণস্বরূপ: জমা দেওয়ার জন্য ধন্যবাদ Your
  5. প্রশাসক ক্লাবের জন্য মুলতুবি থাকা অনুরোধগুলি অনুমোদনের জন্য ওয়ার্ডপ্রেস অ্যাডমিন প্যানেলে যান। (ডেবিটি ডিবি থেকে আনা হয়েছে এবং প্রশাসকের কাছে দেখানো হয়েছে)।

আমি নিম্নলিখিতগুলি করেছেন:

  • 1) আমি ওয়ার্ডপ্রেস এইচটিএমএল সম্পাদক ব্যবহার করে একটি আবেদন ফর্ম / পৃষ্ঠা তৈরি করেছি।
  • 3) আমার কাছে একটি জাভাস্ক্রিপ্ট ফাইল রয়েছে ( validation.js) যার বৈধতা কোড রয়েছে।
  • 4 এর জন্য) আমার কাছে একটি পিএইচপি ফাইল ( club-functions.php) আছে যা storeInDB()ডিবিতে কাস্টম টেবিলের মধ্যে অ্যাপ্লিকেশন বিশদ সংরক্ষণ করার জন্য একটি ফাংশন রয়েছে ।
  • 5 এর জন্য) আমি আমার নিজস্ব প্লাগইন ফোল্ডার তৈরি করেছি এবং একটি পিএইচপি ফাইল যুক্ত করেছি ( club.php) যা ওয়ার্ডপ্রেস অ্যাডমিন প্যানেলে প্রশাসকের কাছে অ্যাপ্লিকেশন বিশদ প্রদর্শন করে।

আমি নিম্নলিখিত স্থানে আটকে আছি: ফর্ম জমা দেওয়ার ব্যবস্থা কীভাবে করবেন। জাভাস্ক্রিপ্টের বৈধতা ফাংশন এবং পরে ফাংশনটি কল করে এমন কোডটি আমার কোথায় রাখা উচিত storeInDB()

আমি কীভাবে এটি অর্জন করব এবং এই পদ্ধতিটি কী ভাল তা সম্পর্কে দয়া করে আমাকে কিছু পরামর্শ দিন? আগাম অনেক ধন্যবাদ.

উত্তর:


13

আপনার wp_ajaxবা wp_ajax_noprivফাংশনটি ব্যবহার করা উচিত ।

সবার আগে আপনার জমা দেওয়া ফর্মের মধ্যে অ্যাডমিন এজাক্স ইউআরএলকে ক্রিয়া বিশিষ্ট মান হিসাবে রাখা উচিত।

<form id="" action="<?php echo admin_url('admin-ajax.php'); ?>" method="post" class="form" >

এইভাবে ফর্মটি ডিফল্টরূপে অ্যাডমিন-অজ্যাক্স.এফপি জমা দেওয়া হবে (জাভাস্ক্রিপ্ট ছাড়াই)। আপনি জাভাস্ক্রিপ্ট ব্যবহার করতে এটি এজেএক্স ব্যবহার করে কাজ করতে পারেন।

এর পরে ফাংশনটি জমা দেওয়া ডেটা ব্যবহার করবে। ফর্মের অভ্যন্তরে, wp_nonce_fieldনামের ক্রিয়া সহ একটি এবং একটি লুকানো ইনপুট রাখুন। আমার ক্রিয়াকলাপটি হ'ল add_transfer

<?php wp_nonce_field('add_transfer','security-code-here'); ?>
<input name="action" value="add_transfer" type="hidden">

আপনি ফাংশনটি রাখতে পারেন যা এই ফর্মটি ফাংশন.এফপি বা আপনার প্লাগইন ফাইলে পরিচালনা করবে। wp_ajax_যদি এটি কেবল লগ ইন করা ব্যবহারকারীদের জন্য ফর্ম হয় তবে আপনি অ্যাকশন নামটি ব্যবহার করতে পারেন । লগ ইন না করা ব্যবহারকারীদের জন্য, wp_ajax_noprivপরিবর্তে + ক্রিয়া নামটি ব্যবহার করুন।

add_action('wp_ajax_add_transfer', 'process_add_transfer');

function process_add_transfer() {
if ( empty($_POST) || !wp_verify_nonce($_POST['security-code-here'],'add_transfer') ) {
    echo 'You targeted the right function, but sorry, your nonce did not verify.';
    die();
} else {
    // do your function here 
    wp_redirect($redirect_url_for_non_ajax_request);
}

উত্তরের জন্য ধন্যবাদ ifdion। আমি 'ওয়ার্ডপ্রেস এইচটিএমএল সম্পাদক' এ ফর্মটি তৈরি করছি। সুতরাং, ফর্মের মধ্যে পিএইচপি কোড অন্তর্ভুক্ত করা কি ভাল কারণ আমাকে 'এক্সিকি-পিএইচপি' প্লাগইন ইনস্টল করতে হবে যা আমি বিশ্বাস করি যে ওভারকিল? আপনার চিন্তা শেয়ার করুন।
পূজা

কেবলমাত্র আপনার-site-url.com/wp-admin/admin-ajax.php দিয়ে ক্রিয়াকলাপটি প্রতিস্থাপন করুন ।
ifdion 4'12

ওইটা কি কাজ করে?
ifdion

1
অ্যাডমিন-অজ্যাক্স.এফপি ছাড়াও একই অর্জনের জন্য কি ভাল উপায় আছে?
তাহির ইয়াসিন

1
@TheWPNovice আমার ধারণা এটি এখনও /wp-admin/ডিরেক্টরিতে রয়েছে। মনে রাখবেন যে আপনাকে সেই ফাইলটিতে কোনও পরিবর্তন বা সংযুক্ত করার দরকার নেই।
ifdion

2

প্রথমে, আমি আপনাকে বলি যে জাভাস্ক্রিপ্টের বৈধতা ক্লায়েন্টের পক্ষে কাজ করে। সুতরাং যদি ব্যবহারকারী, জেএস অক্ষম করে, আপনার সমস্যা হতে চলেছে।

সুতরাং, আপনার সার্ভার-সাইড ইনপুট মানগুলিও যাচাই করা উচিত।

এটা মনে রেখে:

ফর্মটি যেখানে রয়েছে সেখান থেকে জেএস কোডটি সরাসরি কল করা যেতে পারে। এটি কল করার পক্ষে অনসামিত অ্যাট্রিবিউট হ'ল স্বাভাবিক উপায়।

উদাহরণ

<form onSubmit="validateForms()" method="post" action="domain.com/club-contacts">
    <label for="app_email">Application</label>
    <input type="text" name="app_email" id="app_email" value="" />
    <input type="hidden" name="app_application" value="1" />
    <input type="submit" name="app_form_send" value="Send" />
</form>

page.php

এটি আপনার কাস্টম টেম্পলেট পৃষ্ঠা বা একক। পিএফপিও হতে পারে। এক্ষেত্রে 99 আপনার নির্দিষ্ট পৃষ্ঠার আইডি যা আপনি ব্যবহারকারীকে নির্দেশ করতে চান যদি এটি অনুমোদিত হয় বা কোনও ত্রুটি ছিল।

if ( get_the_ID() == '99' ) {
  // lets validate the input
  if( !empty($_POST['app_application']) && $_POST['app_application'] == "1"  ) {
   if(!empty($_POST['app_email'])) {
    // check the codex for [Data_Validation][1]
    }
  }
}

উত্তরের পিটারোয়াক ধন্যবাদ। ফর্ম ডেটাটি আরও প্রক্রিয়া করার জন্য আমি পিএইচপি কোডটি কোথায় কল করতে পারি?
পূজা

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