মূল পার্থক্য হ'ল:
- সংজ্ঞা দেওয়া হয় যা
add_rewrite_rule()
একটি নির্দিষ্ট নিয়ম যোগ করে
add_rewrite_tag()
একটি যোগ স্থানধারক URL স্ট্রাকচার ব্যবহার। এই স্থানধারকটি একাধিক বিধি তৈরি করতে ব্যবহৃত হয়।
উদাহরণস্বরূপ - ধরুন আপনি বিভিন্ন দেশে ট্র্যাভেল এজেন্ট বিজ্ঞাপন হোটেল। আপনি কোনও হোটেলের ইউআরএলটি দেখতে চাইবেন
www.example.com/hotels/UK/Balmoral
যেখানে দেশ (এই উদাহরণস্বরূপ যুক্তরাজ্য) একটি কাস্টম ট্যাক্সোমনি শব্দ এবং বালমোরাল একটি হোটেল (পোস্টের ধরণ)। আমরা এটির জন্য পুনর্লিখনের নিয়মগুলি যুক্ত করতে পারি, তবে তারপরে আমাদের একটি বিধি তৈরি করতে হবে:
- হোটেল নিজেই
- হোটেল সংযুক্তি
- হোটেলগুলির জন্য একটি নিয়ম (পোস্ট) যেখানে এটি বেশ কয়েকটি পৃষ্ঠাগুলির উপরে ছড়িয়ে পড়ে etc.
এই নিয়মগুলি তৈরি করা জটিল হয়ে উঠতে পারে। তদুপরি আমরা সম্ভবত পোস্টের ধরণের জন্য ওয়ার্ডপ্রেসের নিজস্ব নিয়মগুলির সাথে প্রতিযোগিতা করব - পোস্ট প্রকারটি নিবন্ধ করার সময় আমরা যে পারমাস্ট্রাকচার সেট করেছিলাম তা থেকে উত্পন্ন । (যে কোনও ক্ষেত্রে, ওয়ার্ডপ্রেসকে কাজটি করতে দিন)।
এই 'পারমাস্ট্রাকচার' - আপনি পারমালিঙ্ক সেটিংসে পোস্টের জন্য যা সেট করেছেন তার অনুরূপ - ওয়ার্ডপ্রেস উত্পন্ন পুনর্লিখনের নিয়মগুলি নির্ধারণ করে। তবে যেহেতু আমরা এমন একটি কাঠামো চাই যেখানে কিছু অজানা (দেশ) রয়েছে - যা আমরা ব্যাখ্যা করতে চাই - আমাদের ফর্মের একটি স্থানধারক সরবরাহ করতে হবে %country%
। (এটি %category%
পোস্টগুলির জন্য প্রায় অভিন্ন )
উদাহরণ স্বরূপ:
add_action_init('init','wpse71305_register_types');
function wpse71305_register_types(){
//You'll need to register the country taxonomy here too.
//Add 'country' tag.
add_rewrite_tag('%country%', '([^&/]+)'));
//Register hotel post type with %country$ tag
$args = array(
...
'has_archive'=>true,
'rewrite' => array(
'slug'=>'hotels/%country%',
'with_front'=> false,
'feed'=> true,
'pages'=> true
)
...
);
register_post_type('hotel',$args);
}
দ্রষ্টব্য: ওয়ার্ডপ্রেস %country%
ট্যাগ থেকে কীভাবে ইউআরএল তৈরি করতে পারে তা জানে না - এটি এটি করতে আপনাকে বলা দরকার। (আমি নীচে লিঙ্ক করেছি একটি নিবন্ধে এটি কভার)।
অবশেষে ওয়ার্ডপ্রেসটিও ম্যাচের মানটি সংরক্ষণ করবে যাতে আপনি এটির মাধ্যমে পুনরুদ্ধার করতে পারেন get_query_var()
(এমন কোনও কিছু যা আপনি মানক পুনর্লিখনের নিয়মের সাথে না করেন)।
আপনি পোস্টের পারমাস্ট্রাকচারে ব্যবহারের জন্য ট্যাগও তৈরি করতে পারেন (এটিকে পারমালিঙ্ক সেটিংস পৃষ্ঠায় সেট করুন)।
একটি ট্যাগ যুক্ত করে, আমরা এটি পেরমাস্ট্রাকচারে ব্যবহার করতে পারি। ওয়ার্ডপ্রেস তখন জানে
- কি আশা করছ
- ইউআরএলটির কীভাবে ব্যাখ্যা করবেন (এটি মেলে দেখুন)
- মানটির অর্থ কীভাবে ব্যাখ্যা করবেন (যেমন 'যুক্তরাজ্য')
(আমি রেফারেন্স এই নিবন্ধটি দেখুন হিসাবে লিখেছিলেন: http://wp.tutsplus.com/tutorials/creative-coding/the-rewrite-api-the-basics/ )।
সম্পাদন করা
মন্তব্যে উল্লিখিত হিসাবে বাস্তব উদাহরণ হিসাবে register_taxonomy()
কল হিসাবে উপরের উদাহরণটি একটি দরিদ্র add_rewrite_tag()
।
তাদের 'সংমিশ্রণ' ব্যবহার সম্পর্কে কোডেক্স ডকুমেন্টেশন সম্পর্কিত: এটি সম্ভবত বিভ্রান্তিকর কারণ তারা উভয়ই স্বাধীনভাবে ব্যবহার করতে পারেন be উপরে উল্লিখিত হিসাবে, তবে, add_rewrite_tag()
ওয়ার্ডপ্রেস-বোঝার 'ক্যোয়ারী ভেরিয়েবল' এ ট্যাগের নাম যুক্ত করে। অনুশীলনে এটি আপনাকে এর সাথে মানটি পুনরুদ্ধার করতে দেয় get_query_var()
। সুতরাং, যখন এর add_rewrite_rule()
সাথে ব্যবহার করা হয় add_rewrite_tag()
তখন ভেরিয়েবলটি ওয়ার্ডপ্রেস দ্বারা সংরক্ষণ করা হবে। তবে এটি করার অন্যান্য উপায় রয়েছে ( এই উত্তরটি দেখুন - রব ভার্মীরের মন্তব্যটিও নোট করুন)।
এছাড়াও সম্পর্কিত: পুনরায় লিখিত URL গুলি থেকে G _GET ভেরিয়েবলগুলি কীভাবে পুনরুদ্ধার করবেন?
add_rewrite_tag()
স্থানধারকগুলিকে ব্যবহার করার জন্য এটি ব্যবহার করা যেতে পারেSettings->Permalinks
। এক শ্রেণিবৃত্তি ব্যবহার সম্পর্কে, এটিadd_rewrite_tag()
কি ব্যবহারের জন্য প্রয়োজনীয় ? কোডেক্স পৃষ্ঠা থেকে আমার ধারণাটি এটি নয় তবে এটি সাধারণত ব্যবহৃত হয় বলে মনে হয়। আমি ব্যবহার সংক্রান্ত আমার প্রশ্ন সম্প্রসারিতadd_rewrite_tag()
সাথেadd_rewrite_rule()
হিসাবে প্রস্তাব কোডেক্স পৃষ্ঠা ।