মেটা বক্স - পি 3 - গ্রাহকের জন্য বুকিং পৃষ্ঠা ব্যবহার করে কীভাবে হোটেল বুকিং ওয়েবসাইট তৈরি করবেন

আমি আপনাকে এই সিরিজের পরবর্তী অংশটি আনতে ফিরে এসেছি। এই অংশে, আমরা ঘরের পৃষ্ঠায় একটি বুকিং ফর্ম যুক্ত করছি যা ঘরের সমস্ত তথ্য দেখায়। এই ফর্মটি আপনার গ্রাহকদের সহজেই ফ্রন্টএন্ড থেকে বুকিং জমা দিতে দেয়।

এই বুকিং ফর্মটিতে আমরা অংশ 2 এ তৈরি করা কিছু থেকে কিছু আলাদা জিনিস রয়েছে, প্রধানত ক্ষেত্রগুলির কার্যকারিতা। আসুন দেখুন কিভাবে।

শুরু করার আগে

আমরা ক্যালেন্ডারে লকড বা পাস না করে দর্শকদের একটি তারিখ চয়ন করার অনুমতি দিতে যাচ্ছি। সুতরাং, আমাদের ১ ম অংশে উল্লিখিত প্লাগইনগুলি ছাড়াও আমাদের একটি ডেটপিকার লাইব্রেরি প্রয়োজন This এটি একটি জাভাস্ক্রিপ্ট লাইব্রেরি যা আমাদের এই কাজটি করতে সহায়তা করবে।

আমি জ্যাকুরি ইউআই ডেটপিকারকে বেছে নিয়েছি। আপনার সাইটে এই লাইব্রেরিটি আমদানি করার দরকার নেই কারণ মেটা বক্সও এটিকে তারিখের ক্ষেত্রগুলির জন্য ব্যবহার করে। এটি বেশ সুবিধাজনক। এর কলব্যাক এবং ব্যবহারের পরামিতিগুলি সম্পর্কে আরও জানতে কেবল এটি নথিগুলি পড়ুন।

এখন, আমরা এখানে আপনার বুকিং পৃষ্ঠা শেষ করতে যাই।

গ্রাহক ব্যবহারের জন্য ঘরের পৃষ্ঠায় বুকিং ফর্মটি দেখান

আমরা ২ য় অংশে অভ্যন্তরীণ বুকিংয়ের জন্য একটি ফর্ম তৈরি করেছি, তাই ঘরের পৃষ্ঠায় দেখানোর জন্য আমরা আবার সেই ফর্মটি পেয়ে যাব। তারপরে গ্রাহকের রুটিন পূরণের জন্য ফর্মটিতে কিছু অতিরিক্ত কনফিগারেশন এবং কার্যকারিতা যুক্ত করুন।

তবে আমরা কেবল এই পদক্ষেপে ফর্মটি প্রদর্শন করি show পরবর্তী কোনও ক্রিয়া পরে করা হবে।

পদক্ষেপ 1: বুকিং ফর্মটি দেখায় যা ফিল্ড গ্রুপের শর্টকোড পান

অ্যাডমিন ড্যাশবোর্ডে, সমস্ত উপলব্ধ ক্ষেত্রের গোষ্ঠীগুলি দেখতে মেটা বক্স মেনু> কাস্টম ক্ষেত্রগুলিতে যান। প্রত্যেকের পাশে একটি শর্টকোড থাকবে। আপনার প্রয়োজন ক্ষেত্রের গোষ্ঠীর একটি শর্টকোড চয়ন করুন এবং এটি অনুলিপি করুন।

পদক্ষেপ 2: শর্টকোডটি ঘরের পৃষ্ঠায় রাখুন

আপনি যদি পৃষ্ঠা নির্মাতা প্লাগইন ব্যবহার করছেন তবে শর্টকোডটি সেখানে রাখা খুব সহজ।

মনে করুন আপনি এলিমেন্টর ব্যবহার করছেন। শর্টকোড টাইপের জন্য কেবল একটি উইজেট যুক্ত করুন এবং তারপরে উইজেটের সামগ্রীতে উপরের শর্টকোডটি আটকে দিন।

অন্যথায়, আপনি যদি কোনও পৃষ্ঠা নির্মাতা প্লাগইন ব্যবহার না করে থাকেন তবে আপনার কোডটিতে নম্র হিসাবে কিছুটা সামলে নিন:

  • আপনার থিম ফোল্ডারে সিঙ্গেল-রুম.পিপি নামের একটি নতুন ফাইল তৈরি করুন। সেখানে "রুম" হ'ল রুমের পৃষ্ঠার জন্য ব্যবহৃত পোষ্ট টাইপের স্লাগ।
  • সিঙ্গল.এফপি ফাইলে সমস্ত কোড অনুলিপি করুন এবং তারপরে সিঙ্গেল-রুম.এফপিতে পেস্ট করুন।
  • ওয়ার্ডপ্রেসের নীচে do_shortcode () ফাংশনটি ব্যবহার করুন এবং যেখানে আপনি বুকিং ফর্মটি প্রদর্শন করতে চান সেখানে এটিকে যুক্ত করুন।

সেখানে, [এমবি_ফ্রন্টএন্ড_ফর্ম আইডি = 'বুকিং-ফিল্ডস' পোস্ট_ফিল্ডস = 'শিরোনাম, বিষয়বস্তু'] হ'ল ক্ষেত্রের গোষ্ঠীর শর্টকোড যা আমি প্রথম ধাপে অনুলিপি করেছি।

আপনার পছন্দসই জায়গায় do_shortcode () রাখুন

তারপরে, আপনি ঘরের পৃষ্ঠায় দেখানো অংশ 2 তে তৈরি বুকিং ফর্মটি দেখতে পাবেন।

আপনার ওয়েবসাইটের দর্শক এখন এই ফর্মটি পূরণ করতে পারবেন।

সিএসএস ব্যবহার করে অহেতুক ক্ষেত্রগুলি অক্ষম করুন

আপনার গ্রাহক সম্ভবত কিছু তথ্য যেমন অর্ডার নম্বর, বুকিংয়ের তারিখ, দায়িত্বে থাকা ব্যক্তি ইত্যাদির বিষয়ে চিন্তা করেন না তাই আমাদের সেগুলি ফর্মটিতে অক্ষম করা উচিত।

প্রতিটি ক্ষেত্রের গোষ্ঠী (মেটা বক্স> কাস্টম ক্ষেত্র) সম্পাদনা পৃষ্ঠায়, কাস্টম ক্ষেত্রে যা আপনি অক্ষম করতে চান তাতে যান। যেমন। অর্ডার নম্বর ক্ষেত্র। উপস্থিতি ট্যাবে যান এবং কাস্টম সিএসএস ক্লাস বাক্সে "হাইড-ফ্রন্ট্যান্ড" যুক্ত করুন।

একটি কাস্টম ক্ষেত্রের জন্য একটি সিএসএস ক্লাস যুক্ত করুন

একই ক্ষেত্রে অন্যান্য ক্ষেত্রগুলির জন্য একই সিএসএস ক্লাস "হাইড-ফ্রন্টএন্ড" দিয়ে করুন। এর পরে, আপনার থিম ফোল্ডারে বা কাস্টমাইজার স্ক্রিনে (উপস্থিতি> কাস্টমাইজ করুন) ফাইল স্টাইল.এসএস এ যান এবং এই সিএসএস কোডটি সেখানে রাখুন।

.hide-frontend {প্রদর্শন: কিছুই নয়! গুরুত্বপূর্ণ; }

আমি অ্যাড রুম বোতামটিও অক্ষম করতে চাই, তাই আমি এই সিএসএস কোডটিও যুক্ত করব:

.rwmb-button.add-clone {প্রদর্শন: কিছুই নয়! গুরুত্বপূর্ণ; }

উভয় ক্ষেত্র এবং অ্যাড রুম বোতামটি এখন অক্ষম।

চেক-ইন এবং চেক-আউট তারিখের ক্ষেত্রগুলির কার্যকারিতা স্থির করুন

আমরা এর জন্য জেএস ব্যবহার করব, সুতরাং আমরা কেবলমাত্র রুমের পৃষ্ঠার জন্য জেএস প্রক্রিয়া করতে আপনার থিম ফোল্ডারে কাস্টম.জেএস নামে একটি ফাইল তৈরি করব। এটি প্রক্রিয়াটি দ্রুত করতে এবং অপ্রত্যাশিত ত্রুটিগুলি এড়াতে সহায়তা করবে।

এই কোডটি ফাংশন.এফপি ফাইলটিতে আটকান:

ফাংশন enqueue_script () {if (is_singular ('রুম')) {wp_enqueue_script ('কাস্টম-স্ক্রিপ্ট', get_template_directory_uri ()। '/ জেএস / কাস্টম.জেএস'); ;} add_action ('wp_enqueue_scriptts', 'enqueue_script');

সেখানে:

  • is_singular ('রুম'): বর্তমান পৃষ্ঠাটি সেই রুমের পৃষ্ঠা কিনা তা যাচাই করার জন্য যা পোস্টের ধরণের স্লাগ রুম is এটি শর্ত দেয় যে কাস্টম.জেএস ফাইলটি কেবল রোমের পৃষ্ঠার জন্য ব্যবহৃত হয়।
  • wp_enqueue_script: কাস্টম.জেএস ফাইলটি আমদানি করতে।
  • get_template_directory_url (): থিমের ইউআরএল ফিরিয়ে আনতে

চেক-ইন এবং চেক-আউট তারিখের জন্য একটি সীমা তৈরি করুন

চেক-ইন তারিখ সর্বদা চেক-আউট তারিখের আগে হয়, তাই আমাদের তাদের সীমাটি সীমাবদ্ধ করা দরকার। যখন কোনও গ্রাহক চেক-ইন তারিখটি চয়ন করেন, তার আগে সমস্ত তারিখ লক হয়ে যাবে এবং এটি চয়ন করা যাবে না।

আমি নীচের কোডটি সহ এখানে Jquery UI ডেটপিকার ব্যবহার করি এবং এটি কাস্টম.জেএস ফাইলটিতে যুক্ত করি।

jQuery (ফাংশন ($) {var তারিখের ফর্ম্যাট = "yy-মিমি-ডিডি", থেকে = $ ("# গোষ্ঠী_বুকিং_চেক_ইন") .ডেটপিকার ({ডিফল্ট তারিখ: "+ 1w", চেঞ্জমন্ট: সত্য,}) .on ("পরিবর্তন" , ফাংশন () {কনসোল.লগ ('Helloo'); to.datepicker ("বিকল্প", "minDate", getDate (এটি));}), থেকে = $ ("#group_booking_check_out") .ডেটপিকার ({ডিফল্ট তারিখ: "+ 1w", চেঞ্জমুন্থ: সত্য,}) .অন ("পরিবর্তন", ফাংশন () {from.datepicker ("বিকল্প", "ম্যাক্সেটেট", getDate (এই));});
ফাংশন getDate (উপাদান) {var তারিখ; {তারিখ = $ .datepicker.parseDate (তারিখের ফর্ম্যাট, উপাদান.মূল্য) চেষ্টা করুন; } ধরা (ত্রুটি) {তারিখ = নাল; } ফেরতের তারিখ; }});

সেখানে, #group_booking_check_in এবং #group_booking_check_out চেক-ইন তারিখ এবং ঘুরে ফিরে চেক-আউট তারিখ ক্ষেত্রগুলির আইডি। আপনার নিজের আইডিগুলি প্রতিস্থাপন করা উচিত।

ক্ষেত্রের আইডি পান

আপনি এটি পাবেন:

শূন্যপদটি পরীক্ষা করে দেখুন এবং লক সেই দিনগুলি বাইরে of

এটি এই সিরিজের মূল চাবিকাঠি। আমি অনেক উপায়ে চেষ্টা করেছি এবং অবশেষে সবচেয়ে সহজ এবং অনুকূলিত একটি খুঁজে পেয়েছি।

পদক্ষেপ 1: বুকিং তারিখগুলি সংরক্ষণ করার জন্য একটি বিকল্প তৈরি করুন

যখনই কোনও বুকিং তৈরি করা হয়, বুকিংয়ের তারিখগুলির মানগুলি সংশ্লিষ্ট কক্ষের আইডি সহ এই বিকল্পটিতে ইনপুট হবে।

বিকল্পের মান নীচে হিসাবে একটি অ্যারে:

অ্যারে (ঘর_1 => অ্যারে (বুকিং_1 => অ্যারে (কী_আর => অ্যারে (তারিখ 1, তারিখ 2)), কী 2 => অ্যারে (তারিখ 2, তারিখ 3),) বুকিং 2 => অ্যারে (কী_1 => অ্যারে (তারিখ 1, তারিখ 2), কী_2 = > অ্যারে (তারিখ 2, তারিখ 3),)), কক্ষ_2 => অ্যারে (বুকিং_1 => অ্যারে (কী_1 => অ্যারে (তারিখ 1, তারিখ 2), কী 2 => অ্যারে (তারিখ 2, তারিখ 3),)))

সেখানে:

  • রুম_1, রুম_2,… রুমের আইডি ID
  • বুকিং_1, বুকিং_2,… বুকিংয়ের আইডি
  • কী_1, কী_2,… ... ক্লোন করা গোষ্ঠীর নম্বর ক্রম
  • তারিখ 1, তারিখ 2,… বুকিংয়ের আদেশ হিসাবে বুকিংয়ের তারিখ

এর পরে, প্রাথমিক মান সহ rwmb_bookings নামের একটি বিকল্প তৈরি করতে ফাংশন.এফপিএমে এই নীচের কোডটি যুক্ত করুন একটি খালি অ্যারে।

যদি (! get_option ('rwmb_bookings')) {add_option ('rwmb_bookings', অ্যারে ()); }

আপনি এখানে ওয়ার্ডপ্রেসে একটি বিকল্প তৈরি করতে আরও উপায়ে ডুব দিতে পারেন।

পদক্ষেপ 2: যখনই কোনও বুকিং তৈরি করা হয় তখন বিকল্পগুলিতে ইনপুট মানগুলি

এই কোডগুলি ফাংশন.এফপি ফাইলটিতে যুক্ত করুন।

যোগ_অ্যাকশন ('rwmb_booking-fields_ after_save_post', 'আপডেট_বুকিংস_ডেট'); ফাংশন আপডেট_বুকিংস_ডেট ($ পোস্ট_আইডি) ings ings বুকিং = get_post_meta ($ পোস্ট_আইডি, 'গ্রুপ_বুকিং', সত্য); // গ্রুপ_বুকিংয়ের ক্ষেত্রের মান পান তারপরে এটিকে empty বুকিংয়ে রাখুন (খালি ($ বুকিং) &&! Is_array ($ বুকিং)) ফিরে আসায়; $ বিকল্প = get_option ('rwmb_bookings'); foreach ($ key => $ বুকিং হিসাবে বুকিং) {// বুকিংয়ের জন্য একটি লুপ চালান কারণ এটি ক্ষেত্রের গ্রুপ $ রুম = $ বুকিং ['রুম']; // $ রুমটি প্যারামিটারটি হ'ল রুমের আইডি $ শুরু = নতুন তারিখটাইম ($ বুকিং ['চেক_ইন']); // $ শুরু হ'ল শুরুর তারিখ, এর অর্থ চেক-ইন তারিখও $ শেষ = নতুন তারিখটাইম ($ বুকিং ['চেক_আউট']); // $ শেষটি শেষের তারিখ, এর অর্থ চেক আউট তারিখও
val বিরতি = নতুন তারিখ অন্তর্বর্তীকরণ ('পি 1 ডি'); $ ডেটরেঞ্জ = নতুন ডেটপিয়ারড ($ শুরু, $ অন্তর, $ শেষ); // তারিখপরিয়ড ফাংশন শেষ তারিখ $ তারিখ_বুকিং = অ্যারে () বাদ দিয়ে শুরু থেকে শেষ তারিখ পর্যন্ত সমস্ত তারিখ সমেত একটি অ্যারে প্রদান করে; foreach ($ তারিখ হিসাবে তারিখের তারিখ) ray অ্যারে_পুষ ($ তারিখ_বুকিং, $ তারিখ-> ফর্ম্যাট ("Ymd")); // মানগুলিকে $ তারিখ_বুকিং প্যারামিটার P $ বিকল্পে চাপুন [] রুম] [$ পোস্ট_আইডি] [$ কী] = $ তারিখ_বুকিং; // Ass অপশন প্যারামিটার} update_option ('rwmb_bookings', $ বিকল্প) এর জন্য মান নির্ধারণ করুন; // 'rwmb_bookings' বিকল্পটি আপডেট করুন}

এই কোডটিতে আমি বিকল্প প্যারামিটারে মানগুলি ঠেকাতে মেটা বক্সের rwmb _ {$ ফিল্ড_আইডি} _ after_save_post হুক ব্যবহার করেছি। সেখানে, আমার $ ফিল্ড_আইডি বুকিং-ফিল্ড করছে। এর মাধ্যমে, যখনই কোনও পোস্ট, যা আইডি সহ ফিল্ড গ্রুপ ধারণ করে, বুকিং-ফিল্ডগুলি সংরক্ষণ করা হয় (এর অর্থ একটি নতুন বুকিংয়ের অর্ডার রয়েছে), এই হুক নিম্নলিখিত ক্রিয়াগুলি কার্যকর করবে:

  • চেক-ইন এবং চেক-আউট তারিখের মানগুলি পান
  • এই তারিখগুলির মধ্যে থাকা সমস্ত তারিখগুলি প্রকাশ করার জন্য পিএইচপি এর ডেটপিয়ারড ফাংশন ব্যবহার করুন।
  • উপরের তারিখগুলি (চেক-আউট তারিখ ব্যতীত) সংশ্লিষ্ট রুম_আইডির সাথে বিকল্প প্যারামিটারে পুশ করুন।

পদক্ষেপ 3: পরীক্ষা করুন সেই দিনগুলি রুমের বাইরে এবং অপশন প্যারামিটার থেকে শূন্যপদ

এখনও ফাংশন.এফপি ফাইলে, এই কোডটি যুক্ত করুন:

ফাংশন পরিমাণ_ব্যাপি_ডেট ($ রুম_আইডি) ings ings বুকিং = get_option ('rwmb_bookings') [$ রুম_আইডি]; $ তারিখ = অ্যারে (); foreach ($ বুকিং হিসাবে বুকিং) {foreach ($ মান হিসাবে বুকিং) {foreach ($ কে হিসাবে মূল্য) {অ্যারে_পুষ ($ তারিখ, $ কে); }}} অ্যারে_কাউন্ট_ভ্যালুগুলি ($ তারিখগুলি) ফেরত দিন; }

এটির মাধ্যমে, আমরা আপনার গ্রাহক যে কক্ষটি দেখছেন সেই রুমের রুম_আইডির সাথে তারপরে এটির সাথে তুলনা করুন room ঘরের ধরণের বুকিং কক্ষের সংখ্যার সাথে বুকিংয়ের সাথে তারিখগুলি সম্বলিত একটি অ্যারে রফতানি করার বিকল্প প্যারামিটারের সাথে তুলনা করুন। উদাহরণ স্বরূপ:

অ্যারে ([2019-12-18] => 1 [2019-12-19] => 2 [2019-12-20] => 1 [2019-12-21] => 1 [2020-01-31] ​​= > 1 [2020-02-01] => 1)

এই অ্যারেতে মান হিসাবে, এখানে 6 দিন রয়েছে যা দেখার ঘরের ধরণের জন্য বুকিং রয়েছে। 2019–12-29 সালে বুকিং দুটি কক্ষ রয়েছে, এবং অন্য 5 দিনের মধ্যে একটি কক্ষ রয়েছে। এখনও অবধি, আপনি জানেন না কোন দিন শূন্য ঘর আছে।

এই কক্ষের ধরণটিতে 2 টি কক্ষ রয়েছে এমন ইভেন্টে। সুতরাং, আপনি কেবল ২০১২-১২ -১৯ সালে পারিবারিক কক্ষের বাইরে যা ক্যালেন্ডারে লক করা দরকার।

এজন্য আপনার ব্যবহারের মাধ্যমে রুমের সঠিক সংখ্যাটি পরীক্ষা করার জন্য সঠিক তারিখটি ব্যবহারের বাইরে রয়েছে কিনা তা পরীক্ষা করতে হবে:

$ পরিমাণ = rwmb_meta ('পরিমাণ', $ রুম_আইডি);

ঠিক আছে, এখন উপরের ফাংশনটির নাম পরিবর্তন করুন _ পরিমাণ_বিহীন তারিখ ($ রুম_আইডি) হিসাবে তারিখগুলি_ডিজিয়েবল () হতে হবে:

ফাংশন ডেট_ডিজিয়েবল ($ রুম_আইডি) ings ings বুকিং = get_option ('rwmb_bookings') [$ রুম_আইডি]; যদি (খালি ($ বুকিং) &&! is_array ($ বুকিং) ফিরে আসে; $ তারিখ = অ্যারে (); $ অক্ষম = অ্যারে (); foreach ($ বুকিং হিসাবে বুকিং) {foreach ($ মান হিসাবে বুকিং) {foreach ($ কে হিসাবে মূল্য) {অ্যারে_পুষ ($ তারিখ, $ কে); ;}} $ তারিখ = অ্যারে_কাউন্ট_ভ্যালু ($ তারিখ); $ পরিমাণ = rwmb_meta ('পরিমাণ', $ রুম_আইডি); foreach ($ তারিখগুলি $ কী => $ তারিখ) {যদি ($ তারিখ> = $ পরিমাণ) ray অ্যারে_পুষ ($ অক্ষম, $ কী); }} ফেরত $ অক্ষম; }

এই ফাংশনটি কেবল আমাদের লক করার জন্য তারিখগুলি ফিরিয়ে দেবে। সুতরাং, আপনি যখন এই তারিখটি ব্যবহার করতে চান, কেবলমাত্র প্যারামিটারটি কল করুন:

$ অক্ষম = তারিখ_ অক্ষম ($ রুম_আইডি);

এগুলি সবগুলিকে আমার মতো করে ফাংশনে রাখার পরিবর্তে আপনি প্রথম ফাংশন দ্বারা নির্ধারিত একটি প্যারামিটার ব্যবহার করতে পারেন তারপরে চেক করতে একটি নতুন ফাংশন তৈরি করতে পারেন।

পদক্ষেপ 4: জাভাস্ক্রিপ্ট ব্যবহার করে চেক-ইন এবং চেক-আউট তারিখের ক্ষেত্রে সেই তারিখগুলি লক করুন

আমরা jQuery ডেটপিকার ইউআই দ্বারা তারিখগুলি অক্ষম করতে কোনও জেএসের একটি পিএইচপি প্যারামিটার (তারিখ_ অক্ষম) বরাদ্দ করব।

Wp_enqueue_script ()… লাইনের অধীনে কাস্টম.জেএস আমদানি করতে ব্যবহৃত ফাংশনে এই নিম্নলিখিত কোডটি আটকান।

wp_localize_script ('কাস্টম-স্ক্রিপ্ট', 'অক্ষম_ তারিখ', জসন_এনকোড (তারিখ_ডিজিবাল (get_the_ID ())));
জেএস-তে

আপনি এটি সঠিকভাবে করেছেন কিনা তা পরীক্ষা করতে কনসোল.লগ করুন (অক্ষম_ডেটস) তারপর ঘরের পৃষ্ঠায় কনসোল ট্যাবটি খুলুন। প্রথমে কিছু বুকিং তৈরির কথা মনে রাখুন, তারপরে আপনি আরও নিখুঁতভাবে এটি পরীক্ষা করতে পারেন।

এরপরে, কাস্টম.জেএস ফাইলে এই কোডটি যুক্ত করুন তারিখগুলি বাইরে থাকুন lock

from.add (to) .datepicker ({showSowDay: ফাংশন (তারিখ) {var স্ট্রিং = jQuery.datepicker.formatDate ('yy-mm-dd', তারিখ); প্রত্যাবর্তন [তারিখ_disable.indexOf (স্ট্রিং) == -1] }});

সেখানে:

  • তারিখের সীমা তৈরির পদক্ষেপে ব্যবহৃত থেকে শুরু করে:
  • তারিখ_ডিজিবল একটি অ্যারে স্টোর যা কোন দিন আমরা লক করতে চাই

আপনি দেখতে পাচ্ছেন যে 2019–12–19 তারিখটি এখন লক হয়েছে:

পদক্ষেপ 5: অপশন প্যারামিটারে অনুকূলিত করুন

আপনি দেখতে পাচ্ছেন, এই বিকল্পের প্যারামিটারে বুকিংয়ের তারিখগুলির সীমাহীন মান রয়েছে। এটি আপনার ডাটাবেসকে ওজন করবে এবং চেকিংয়ের প্রক্রিয়াটি ধীর করবে।

এই কারণে, আপনার বর্তমান তারিখের আগের সমস্ত দিন বাদ দেওয়ার পাশাপাশি এটি অপ্টিমাইজ করা উচিত। এটি আপনার বিকল্প প্যারামিটারে মানগুলির সংখ্যা হ্রাস করবে।

আমরা নিম্নলিখিত দুটি ফাংশন ব্যবহার করব:

ফাংশন অ্যারে_ফিল্ডার_রেকর্ড ($ ডেটা) $ $ আসল = $ ডেটা; $ ডেটা = অ্যারে_ ফিল্টার ($ ডেটা); $ ডেটা = অ্যারে_ম্যাপ (ফাংশন ($ ই)) {রিটার্ন ইজ_আরে ($ ই)? অ্যারে_ফিল্টার_রেক্রসিভ ($ ই): $ ই;}, $ ডেটা); $ আসল === $ ডেটা ফেরত দেবেন? $ ডেটা: অ্যারে_ফিল্টার_রেকারসিভ ($ ডেটা); } ফাংশন অনুকূল_বুকিংস_পশন () {ings বুকিং = get_option ('rwmb_bookings'); যদি (খালি ($ বুকিং) &&! is_array ($ বুকিং) ফিরে আসে; $ আজ = তারিখ ("Ymd"); foreach ($ key_1 => $ bk_1 হিসাবে ings বুকিং) {foreach ($ bk_1 হিসাবে $ key_2 => $ bk_2) {foreach ($ bk_2 হিসাবে $ key_3 => $ bk_3) {foreach ($ bk_3 হিসাবে $ key_4 => $ bk_4 ) {if ($ bk_4> $ আজ) {আনসেট করুন ($ বুকিং [$ কী_1] [$ কী_2] [$ কী_3] [$ কী_4]); }}
ings}} $ বুকিং = অ্যারে_ ফিল্টার_রেক্রসিভ ($ বুকিং); update_option ('rwmb_bookings', $ বুকিং); }
যোগ_অ্যাকশন ('init', 'অনুকূল_বুকিংস_পোশন');

সেখানে:

  • optimal_bookings_option () বুকিংয়ের তারিখটিকে বর্তমান তারিখের সাথে তুলনা করতে এবং বিকল্পটিতে অতীতের তারিখটি সরাতে সহায়তা করে।
  • অ্যারে_ফিল্টার_রেকর্ড () সমস্ত খালি অ্যারে এবং খালি মানগুলি ফিল্টার করতে এবং মুছে ফেলতে সহায়তা করে।

আমি অ্যারে_ফিল্টার_রেকারসিভ () ব্যবহার করার সিদ্ধান্ত নিয়েছি কারণ কিছু বুকিংয়ের তারিখ সরিয়ে দেওয়ার পরে, আমি নীচের মতো কিছু খালি মান পেয়েছি:

অ্যারে (2) {
    [451] => অ্যারে (2) {[0] => অ্যারে (2) {
        [2] => অ্যারে (3) {}} [440] => অ্যারে (1) {[0] => অ্যারে (2) {[0] => স্ট্রিং (10) "2020-01-31" [1 ] => স্ট্রিং (10) "2020-02-01"}}}

অ্যারে_ফিল্টার_রেকারসিভ () ফাংশন আমাকে অ্যারেতে খালি দুটি অ্যারে সরানোর জন্য সহায়তা করে [451]। আমি এই কৌশলটি php.net এ পেয়েছি, আপনি এটি উল্লেখ করতে পারেন।

বুকিংয়ে তারিখের জন্য শর্ত যুক্ত করুন

যদিও আমরা কিছু তারিখ লক করেছি, এটি প্রদর্শনটিতে মোকাবেলা করা হয়েছে। আপনার গ্রাহক যদি কোডার হন তবে লকড তারিখটি চয়ন করতে তিনি একেবারে এটি হ্যাক করতে পারেন।

সুতরাং, অপ্রত্যাশিত ত্রুটিগুলি এড়াতে আমাদের আপনার বুকিংয়ের তারিখে কিছু শর্ত যুক্ত করা উচিত:

  • চেক-ইন এবং চেক-আউট তারিখগুলি অবশ্যই লক করা তারিখগুলির সাথে মিলে যায় না।
  • চেক-ইন তারিখটি অবশ্যই বর্তমান তারিখের পরে হওয়া উচিত।

বৈধ বুকিং অবশ্যই উপরের উভয় শর্ত পূরণ করতে হবে।

আমি উপরের শর্তগুলি পরীক্ষা করতে rwmb_frontend_uthorate ব্যবহার করি।

add_filter ('rwmb_frontend_ediaate', ফাংশন ($ বৈধতা দিন, $ কনফিগার) {যদি ('বুকিং-ফিল্ডস'! == $ কনফিগার ['আইডি']) {রিটার্ন $ বৈধতা দিন;} $ অক্ষম_ডেটস = তারিখ_ডিজিয়েবল (get_the_ID ()); $ চেকইন = তারিখ ("ওয়াইএমডি", স্ট্রোটোটাইম ($ _ পোষ্ট ['গ্রুপ_বুকিং_চেক_ইন'])); out চেকআউট = তারিখ ("ওয়াইএমডি", স্ট্রোটোটাইম ($ _ পোস্ট ['গ্রুপ_বুকিং_চেক_আউট']));
যদি (মিথ্যা! == অ্যারে_সার্চ ($ চেকইন, $ অক্ষম_ তারিখ)) {$ বৈধতা = মিথ্যা; } অন্য {আপডেট_পোস্ট_মেটা ($ কনফিগার ['পোস্ট_আইডি'], 'গ্রুপ_বুকিং_রুম', get_the_ID ()); } ফেরত $ যাচাইকরণ;
}, 10, 2);

এটির মাধ্যমে, আমি চেক করেছিলাম বুকিংটি বৈধ কিনা। যদি তা না হয় তবে আমাদের গ্রাহককে তাদের অবহিত করা উচিত যে তারা অসফলভাবে বুক করেছেন।

চূড়ান্ত শব্দ

আপনি ইতিমধ্যে ইতিমধ্যে অভ্যন্তরীণ এবং বাহ্যিক উভয় ব্যবহারের জন্য সমস্ত বুকিং পৃষ্ঠা এবং ফর্মগুলি শেষ করেছেন। আমরা বুকিং পরিচালনার পৃষ্ঠা সহ পরবর্তী পোস্টে চালিয়ে যাব। এটি হোটেল মালিককে স্টক সম্পর্কে সামগ্রিক দৃষ্টিভঙ্গি করতে সহায়তা করবে। পরের অংশে আমার জন্য অপেক্ষা করুন।

তদ্ব্যতীত, আপনার দ্রুত রেফারেন্সের জন্য, এগুলি হ'ল আমি এখন পর্যন্ত তৈরি করা সমস্ত উত্স কোড।

  • কাস্টম.জেএস ফাইলের সম্পূর্ণ উত্স কোড:
  • সিঙ্গেল-রুম.এফপি ফাইলের সম্পূর্ণ উত্স কোড:
  • ফাংশন.এফপি ফাইলের সম্পূর্ণ উত্স কোড:

- - -

মেটা বক্সে সরকারী প্রকাশনা