আপনার তিনটি গুরুত্বপূর্ণ কাজ করা দরকার:
- ইউআরআইয়ের অংশগুলিকে রূপান্তরিত মানগুলিতে রূপান্তর করতে একটি কাস্টম পুনর্লিখনের নিয়ম তৈরি করুন
index.php
।
- ওয়ার্ডপ্রেসের ক্যোয়ারী ভেরিয়েবলগুলি শ্বেত তালিকাতে যুক্ত করুন
myroute
এবং যুক্ত করুন myargument
, যাতে ওয়ার্ডপ্রেসগুলি যখন কোনও কোয়েরি স্ট্রিংয়ের সাথে উপস্থিত হয় তখন কেবল তাদের এড়িয়ে যায় না।
- পুনর্লিখনের নিয়মগুলি ফ্লাশ করুন।
প্রথমত, আমি সুপারিশ করতে যাচ্ছি এর পরিবর্তে http://www.example.org/myroute/myargument
, আপনি যখন ইউআরআইকে এই বিশেষ 'রুটগুলির মধ্যে একটি হিসাবে বিবেচনা করা উচিত তখন নির্দিষ্ট কিছু উপসর্গ বা প্রত্যয় স্থির করে নিন। এই উদাহরণের জন্য, আমি উপসর্গটি বেছে নিয়েছি api
, যাতে এটি হয় http://www.example.org/api/myroute/myargument
। আমি বেছে নিয়েছিলাম api
কারণ যখন আমি কিছু বিশ্রামের কাজ করেছি, যেমনটি আপনি কাজ করছেন বলে মনে হয়, তখন এটি একটি এপিআইয়ের জন্য ছিল।
কোড
add_filter( 'rewrite_rules_array', 'my_insert_rewrite_rules' );
add_filter( 'query_vars', 'my_insert_query_vars' );
add_action( 'wp_loaded', 'my_flush_rules' );
// flush_rules() if our rules are not yet included
function my_flush_rules() {
$rules = get_option( 'rewrite_rules' );
if ( ! isset( $rules['api/(.*?)/(.+?)'] ) ) {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
}
// Adding a new rule
function my_insert_rewrite_rules( $rules ) {
$newrules = array();
$newrules['api/(.*?)/(.+?)'] = 'index.php?myroute=$matches[1]&myargument=$matches[2]';
return $newrules + $rules;
}
// Adding the id var so that WP recognizes it
function my_insert_query_vars( $vars ) {
array_push( $vars, 'myroute', 'myargument' );
return $vars;
}
দ্রুত ব্রেকডাউন
এটি সব মোটামুটি সোজা এগিয়ে। রেগেক্স প্যাটার্নটি ওয়ার্ডপ্রেসের সমস্ত পুনর্লিখনের নিয়মের তালিকায় যুক্ত হয়েছে এবং আপনার কাস্টম প্যাটার্ন তালিকার শীর্ষে রয়েছে। প্যাটার্নটি মিলে গেলে, ওয়ার্ডপ্রেস পুনর্লিখনের নিয়মগুলির তালিকাগুলি সন্ধান করা বন্ধ করবে $matches[1]
এবং $matches[2]
কোয়েরি স্ট্রিংয়ে রেফারেন্সের ( এবং ) রেফারেন্সের জায়গায় রেগেক্সের ধরা পড়া মানগুলি ব্যবহার করবে index.php
।
ক্যোয়ারী ভেরিয়েবলগুলি myroute
এবং myargument
শ্বেত তালিকাতে যুক্ত করা কেবল ওয়ার্ডপ্রেসকে এড়িয়ে যাওয়ার চেয়ে তাদের প্রতি মনোযোগ দেয়।
আপনার কাস্টম রুটটিকে 'নেমস্পেসিং' করার বিকল্প উপায়
আপনি যদি /api/
উপসর্গ হিসাবে ব্যবহার এড়াতে চান , আপনি পরিবর্তে কোয়েরি স্ট্রিং ভেরিয়েবল / ক্ষেত্র ব্যবহার করতে পারেন। এরকম কিছু করার জন্য, আপনি রেজিটাকে এমন কিছুতে পরিবর্তন করতে হবে (.*?)/(.+?)\\?api=1
এবং তারপরে কলটিতে api
অতিরিক্ত প্যারামিটার হিসাবে যুক্ত করবে ।array_push()
my_insert_query_vars()
এটি কাস্টম রুটকে পরিবর্তন করবে যাতে এটি যে কোনও সময় ট্রিগার করে তোলে api=1
ক্যোয়ারী স্ট্রিংয়ের প্রথম উপাদান, যেমন এটি ট্রিগার করবে http://example.com/anytext/anytext?api=1
।
'নেমস্পেসিং' শব্দটির ব্যবহার উপেক্ষা করুন - এটি কেবল ব্রেভিটির জন্য ব্যবহৃত হয়েছিল।
আপনি যদি উপসর্গ বা প্রত্যয় দিয়ে 'নেমস্পেস' না করেন তবে ইউআরআই নিদর্শনগুলির সাথে সংঘাতের সমাপ্তি ঘটবে। এটি কারণ হ'ল ওয়ার্ডপ্রেসের কোনও পোস্ট বা পৃষ্ঠা হওয়ার উদ্দেশ্যে আপনার কাস্টম প্যাটার্নটিকে আলাদা করার কোনও উপায় নেই। ওয়ার্ডপ্রেস কীভাবে জানবে যে myroute
এটি কোনও শ্রেণীবদ্ধ, পদ বা কোনও পিতামাতার পৃষ্ঠা নয়?
আশাকরি এটা সাহায্য করবে.
my_insert_rewrite_rules
সংজ্ঞা অনুসারে নিয়ম সংজ্ঞায়িত ! প্রথমে দীর্ঘতম নিয়মটি দিয়ে শুরু করুন তারপরে সহজতমটিতে কাজ করুন, অন্যথায় / এপিআই / মাইরোট / এপিআই / মাইরোট / মায়ারগমেন্টটি ওভাররাইড হবে।