ওয়ার্ডপ্রেসে অ্যাজাক্স কল এবং জেএসএন কীভাবে পরিচালনা করবেন


13

আমার একটি কাস্টম পোস্ট টাইপ রয়েছে যা আমি jQuery এর মাধ্যমে অ্যাক্সেস করতে চাই - পছন্দ করে JSON ব্যবহার করে।

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

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

আমি ওয়ার্ডপ্রেস কোডেক্স পড়ার চেষ্টা করেছি, তবে অ্যাজাক্স কলগুলি যেভাবে পরিচালনা করা হয় তা আমাকে কেবল বিভ্রান্ত করে তোলে, আপনি অ্যাডমিন পৃষ্ঠা না হয়েও প্রতিটি এজ্যাক্স কল অ্যাডমিন-অজ্যাক্স.এফপি পোস্ট করছেন?

কেউ কি আমার সমস্যাগুলি সোজা করতে পারেন?

/ ঝড়

সম্পাদন করা

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

আমি যুক্ত অন্যান্য প্রশ্নের মধ্যে, আপনি ফাইলটি ডাব্লুপি রুটে স্থাপন করে একটি ফাংশন তৈরি করেছেন - আমি এটি করতে চাই না। তবে আমি এখন wp_ajax_ (nopriv _) [ক্রিয়া] কীভাবে ব্যবহার করতে হবে তা শিখেছি এবং আমি তৈরি জেসনকে কার্যকরভাবে অ্যাক্সেস করতে পারি। বাকি সমস্যাটি হ'ল কল করার জন্য আমার যেখানে জেএস স্থাপন করা উচিত। আমি এটি প্লাগইনস জেএস ফাইলটিতে রাখতে চাই, তবে এটি অ্যাডমিন সাইটে নয় , কোনও পৃষ্ঠায় উপস্থাপন করতে হবে , এজ্যাকারল সংজ্ঞায়িত হয়নি, তাই আমাকে পিএইচপি ব্যবহার করে প্রতিধ্বনি করতে হবে।

echo admin_url('admin-ajax.php');

সুতরাং প্রশ্নটি দাঁড়ায় যে কীভাবে আমি এই পিএইচপিটিকে জাভাস্ক্রিপ্টের সাথে একত্রিত করব এবং এটি ফাইল বা স্ক্রিপ্ট নয় বলেই আমি কীভাবে এটি সজ্জিত করব?


আরও বর্ণনামূলক শিরোনাম দিতে আমি আপনার প্রশ্নের শিরোনাম সম্পাদনা করতে চাই তবে পড়ার পরেও আমি এখনও আপনার প্রশ্নটি কি 100% নিশ্চিত নই। আপনি কীভাবে কীভাবে কোনও JSON ফিড অ্যাক্সেস করবেন, কাস্টম পোস্ট প্রকারের সাথে সম্পর্কিত নয় (সিপিটি কি আসলেই আপনার প্রশ্নের আমদানি করে না?) এবং এটি কী মূলের মধ্যে না থাকা গুরুত্বপূর্ণ? এটি কি প্রশাসকের কার্যকারিতার জন্য? আপনি যে প্রযুক্তিগত পদ্ধতির সাথে লড়াই করছেন তার পাশাপাশি আপনি শেষ ব্যবহারকারীর দৃষ্টিকোণ থেকে যা অর্জন করার চেষ্টা করছেন তা যদি ব্যাখ্যা করেন তবে এটি সাহায্য করবে?
মাইকচিন্কেল

হ্যাঁ, আমি সম্মতি জানাতে পারি যে শিরোনামটি এখন পর্যন্ত সবচেয়ে বর্ণনামূলক নয়। আমি প্রথমে কিছুটা রেখেছিলাম কারণ আমি প্রথমে আরও খারাপের সাথে পোস্ট করেছি। আরও তথ্য সহ পোস্ট সম্পাদিত।
ঝড়

আমি স্রেফ কাস্টম পোস্টের ধরণটি রেখেছি, কারণ যে জসন-এপিআই প্লাগইন জনপ্রিয় বলে মনে হচ্ছে তা কাস্টম পোস্টের ধরণগুলিতে coverাকা দেয় না।
ঝড়

উত্তর:


17

আজাক্স হ্যান্ডলার

এটি প্রকৃতপক্ষে কিছুটা বিভ্রান্তিকর যে এজাক্স হ্যান্ডলারটি wp-admin/ডিরেক্টরিতে রয়েছে তবে হ্যাঁ, আপনি এটি প্রশাসনিক-অনুরোধের জন্যও ব্যবহার করতে পারেন এবং করা উচিত। তারপরে আপনি হকের জন্য কোনও হ্যান্ডলারকে wp_ajax_nopriv_[action]সাধারণের পরিবর্তে নিবন্ধভুক্ত করুন wp_ajax_[action]। এই ক্ষেত্রে আপনাকে কেবল প্রথম লাইনগুলিadmin-ajax.php অনুসরণ করতে হবে , যেহেতু লগ ইন না করা কোনও ব্যবহারকারী দ্বারা করা একটি অনুরোধ ইতিমধ্যে পৃষ্ঠা 50 এর লাইনে ছেড়ে যাবে।

তাই হুক জন্য একটি ফাংশন রেজিস্টার করো wp_ajax_nopriv_get_custom_post_data, এবং যদি আপনি জন্য অনুরোধ এটা বলা হবে admin-ajax.phpসঙ্গে actionথেকে প্যারামিটার সেট get_custom_post_datadie()আপনার হ্যান্ডলারের শেষে নিজেই কল করতে ভুলবেন না , অন্যথায় ডিফল্টটি die(-1)ফিরে আসবে। এবং লগ-ইন করা সংস্করণটিও wp_ajax_get_custom_post_data(একই হ্যান্ডলারের ফাংশনে, কোনও সমস্যা নেই) নিবন্ধভুক্ত করুন , যেহেতু আপনি যদি নিজের সাইটে লগ ইন করেন তবে আপনি noprivহুকটি আঘাত করবেন না ।

জাভাস্ক্রিপ্টে সার্ভার-সাইড কনফিগারেশন

সার্ভার-সাইড কনফিগারেশন ডেটা ( admin-ajax.phpurl এর মতো ) প্রেরণের কৌশলটি হ'ল wp_localize_script()। আপনি এটিকে কী এবং মানগুলির একটি অ্যারে পাস করেন যা পৃষ্ঠার শীর্ষে অন্তর্ভুক্ত করা হবে। এটি সম্ভবত প্রাথমিকভাবে স্থানীয়করণযোগ্য স্ট্রিংয়ের জন্যই তৈরি হয়েছিল তবে আপনি এটি কনফিগারেশন ডেটাও পাস করার জন্য ব্যবহার করতে পারেন।

wp_localize_script('storm_json_config', 'storm_config', array(
    'ajaxurl' => admin_url('admin-ajax.php'),
));

storm_json_configহ্যান্ডেলের নাম (যদি আপনি পরে এটি শনাক্ত করতে চান), storm_configজাভাস্ক্রিপ্ট অবজেক্টের নাম যা আপনার ডেটা ধারণ করবে। সুতরাং আপনার স্থির জাভাস্ক্রিপ্ট ফাইলের মতো একটি লাইন থাকতে পারে jQuery.post(storm_config.ajaxurl, ...)

একই রকম প্রশ্নের বেল্টজের উত্তরও দেখুন ।

স্ট্যাটিক জাভাস্ক্রিপ্ট প্লাগইন থেকে

আপনার নিজের প্লাগইন ডির থেকে একটি স্থির জাভাস্ক্রিপ্ট ফাইল লোড করতে, আপনি ব্যবহার করুন wp_enqueue_script()। এটি দেখতে এরকম কিছু দেখাবে:

wp_enqueue_script('storm_json', plugin_dir_url(__FILE__) . 'js/json.js', array('jquery'), '20101105');

storm_jsonআবার কোনও হ্যান্ডেলের নাম কোথায় , তারপরে আপনি ফাইলটির লিঙ্কটি দিন, তারপরে নির্ভরতা (হতে পারে null) এবং তারপরে একটি সংস্করণ নম্বর যা আপডেটগুলিতে ব্রাউজার ক্যাশে বীট করার অনুরোধের পরে যুক্ত করা হবে।


দুর্দান্ত উত্তর আমি যা ভাবছিলাম এটি ছিল এবং আমি মনে করি এটি কাজ করে গেছে। আমি এখন অ্যাক্সেস করতে পারি /wp-admin/admin-ajax.php?action=usedtion] এবং একটি জেসন ফলাফল পেতে পারি। আমার সমস্যা এখন জেএসকে কোথায় রাখতে হবে এজ্যাক্স কল করতে। যেহেতু আমাকে ইকো অ্যাডমিন_আর্ল ('অ্যাডমিন-আজাক্স.এফপি') লাগানো দরকার; ইউআরএল হিসাবে, আমি এটি আমার প্লাগিন জেএস ফাইলটিতে রাখতে পারি না। তাহলে আমি কীভাবে এটি সারিবদ্ধ করব? আমি কোনও পৃষ্ঠার মাঝখানে স্ক্রিপ্টটি মুদ্রণ করতে চাই না।
ঝড়

@ স্টোরম: আমি আমার উত্তরটি প্রসারিত করেছি wp_localize_script(), যা আপনি সার্ভার-পাশ থেকে ব্রাউজারে কনফিগারেশন ডেটা প্রেরণে ব্যবহার করতে পারেন। (ছোট্ট টিপ: আপনি যদি @একটি ব্যবহারকারীর নাম যুক্ত করেন তবে সেই ব্যক্তিটি আপনার জবাবের একটি বিজ্ঞপ্তি পাবেন So তাই @Mike: I updated the titleতিনি আপনার মন্তব্যটি দেখেছেন তা নিশ্চিত করুন)
জান ফ্যাব্রি

ধন্যবাদ একটি গুচ্ছ জানু। আমি এখন পুরো প্যাকেজটি বুঝতে পেরেছি বলে মনে করি। এটিকে পুরোপুরি বুঝতে আমি এগুলির সাথে কিছুটা ঝাঁকুনিতে পড়তে হবে তবে আপনি একটি দুর্দান্ত সহায়তা করেছেন! উত্তর গৃহীত =) বিটিডব্লু @ নোটের জন্য ধন্যবাদ তবে আমি এখন আপনার উত্তর সম্পর্কে মন্তব্য করছি, আপনি এখনও একটি সতর্কতা পেতে হবে?
ঝড়

@ স্টটারম: হ্যাঁ, আপনি যে মন্তব্য করছেন বা উত্তর দিয়েছেন সে সম্পর্কে লেখকের কাছে সতর্কতাটি পৌঁছেছে এবং অতিরিক্তভাবে এটি অন্য কোনও অংশগ্রহণকারীকে যেতে পারে যা আপনি @-কমেন্টে উল্লেখ করেছেন। সুতরাং আমি আপনার বিজ্ঞপ্তিটি "নিখরচায়" পেয়েছি, তবে আমি আপনাকে অন্তর্ভুক্ত না করলে আপনি এই বার্তার জন্য একটি পাবেন না। স্ট্যাক এক্সচেঞ্জ নেটওয়ার্কের সাধারণ মেটা সাইটে সম্পূর্ণ ব্যাখ্যা রয়েছে
জান ফ্যাব্রি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.