Add_rewrite_tag () কখন ব্যবহার করা উচিত?


22

পুনর্লিখনের নিয়মকে কীভাবে সেরাভাবে যুক্ত করা যায় তা শেখার চেষ্টা করে আমি কয়েক দিন ব্যয় করেছি। এখনও অবধি আমার উপলব্ধি হ'ল সহজ নিয়ম যুক্ত করার উপযুক্ত উপায়টি হ'ল ব্যবহার করা add_rewrite_rules(), এই বিনিময় সম্পর্কে জ্যান ফ্যাব্রিকে প্রচুর ধন্যবাদ সহকারে যেগুলির বিশদ বিবরণগুলি ব্যাপকভাবে ব্যবহৃত হয়েছে।

যদিও তিনি উল্লেখ করেছেন add_rewrite_tags()আমি এটির কোনও ব্যবহারিকর জন্য পুনর্লিখনের নিয়মগুলি যুক্ত করার অন্যান্য উপায়গুলির বিপরীতে বা এর ব্যবহার সম্পর্কে ভাল কোনও উদাহরণের বিপরীতে কোনও গাইড দেখিনি। এটি একটি আরও শক্তিশালী সরঞ্জাম বলে মনে হচ্ছে, তবে আমি কেবল এটিই বুঝতে পারি। আমি কোডেক্সে উদাহরণগুলি খুব ক্রিপ্টিক বা অসম্পূর্ণ দেখতে পাই । কেউ কি এর উপর বিশদ বর্ণনা করতে পারে বা কোনও উত্সকে নির্দেশ করতে পারে? আমি গুগলে দরকারী কিছু পাই নি।

সম্পাদনা: এর কোডেক্স পৃষ্ঠাটি এরসাথে একত্রে ব্যবহার করে 'সাধারণভাবে' সম্পর্কে আলোচনা করেadd_rewrite_rules()তবে বিস্তারিত হয় না। একইভাবে কোডেক্স পৃষ্ঠা জন্যadd_rewrite_rules()বোঝায়add_rewrite_tags()কিন্তু খুব তথ্যের উপর খুব বিক্ষিপ্ত হয়। এই জাতীয় সংমিশ্রণ কখন এবং কীভাবে ব্যবহৃত হবে? আমি কেবল উদাহরণটি পেয়েছি রব ভার্মিরের এই উত্তর যা আমি বুঝতে পারি না।

উত্তর:


21

মূল পার্থক্য হ'ল:

  • সংজ্ঞা দেওয়া হয় যা 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()হিসাবে প্রস্তাব কোডেক্স পৃষ্ঠা
খুতবা

আপনি ট্যাক্সোনমিগুলি সম্পর্কে একদম ঠিক বলেছেন (আমার পক্ষে একটি খারাপ উদাহরণ)। এর এই অংশটি দেখুন register_taxonomy()। এর চেয়ে ভাল উদাহরণ %country%হ'ল আপনি যখন এর মতো কিছু ব্যবহার করতে চান তবে যখন দেশটি কেবল একটি সাধারণ ক্যোয়ারী ভেরিয়েবল এবং ট্যাক্সোনমি নয়। এই ক্ষেত্রেগুলি বিরল - আমার কখনও ব্যবহার করা হয়নি add_rewrite_tag()
স্টিফেন হ্যারিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.