একটি কাস্টম শ্রেণিবদ্ধ শ্রেণিবিন্যাস পারমিলিংক থেকে ট্যাক্সনমি স্লাগ সরান


21

আমি এই নিয়মগুলি ব্যবহার করে একটি 'ফোরাম' শ্রেণি তৈরি করেছি:

register_taxonomy(
  'forum',
  array('topic'),
  array(
    'public' => true,
    'name' => _a('Forums'),
    'singular_name' => _a('Forum'),
    'show_ui' => true,
    'show_in_nav_menus' => true,
    'hierarchical' => true,

    'labels' => array(
      'name' => _a('Forums'),
      'singular_name' => _a('Forum'),
      'search_items' => _a('Search Forums'),
      'popular_items' => _a('Popular Forums'),
      'all_items' => _a('All Forums'),
      'parent_item' => _a('Parent Forum'),
      'parent_item_colon' => _a('Parent Forum:'),
      'edit_item' => _a('Edit Forum'),
      'update_item' => _a('Update Forum'),
      'add_new_item' => _a('Add New Forum'),
      'new_item_name' => _a('New Forum Name'),
    ),
    'query_var' => true,
    'rewrite' => array('slug' => 'forums', 'with_front' => false, 'hierarchical' => true),  
  )
);

ফ্রন্ট-এন্ডে ইউআরএলগুলি দেখে মনে হচ্ছে:

forums/general-discussion/sub-forum

আমি কীভাবে সামনের স্লাগ ("ফোরাম") সরাতে পারি? অর্থাৎ, ইউআরএলগুলি এতে পরিবর্তন করুন:

general-discussion/sub-forum

যদি আমি রেজিস্ট্রেশন_ট্যাক্সনমি () এটির জন্য খালি স্লাগ আর্গুমেন্টটি পাস করি তবে এটি কার্যবিধির সাথে সম্পর্কিত পোস্ট টাইপের পারমলিক্সের সাথে সমস্যা সৃষ্টি করে


@ এক ট্রিক পনি - আপনি কি 'slug' => 'forums'একেবারে পুরোপুরি সরিয়ে এবং কেবল খালি রাখার পরিবর্তে চেষ্টা করেছেন 'rewrite' => array('with_front' => false, 'hierarchical' => true)? আমি মনে করি এটি আমার জন্য অতীতে কাজ করেছে। এছাড়াও নিশ্চিত হয়ে নিন যে আপনি পারমিলিকগুলি ফ্লাশ করেছেন।
আইলিনকোড

চেষ্টা করে দেখলাম, এবং পারমালিঙ্কস দেখতে একই রকম। সংযোজন 'slug' => ''এটি কার্যকর করে তোলে, তবে তারপরে এই শ্রেণীবদ্ধ ব্যবহার করে পোস্টগুলি 404s উত্পন্ন করে
onetrickpony

@ এক ট্রিক পনি - 'সাধারণ-আলোচনা' ছাড়াও আপনার অন্যান্য শীর্ষ স্তরের পাথ বিভাগগুলির কী দরকার?
মাইকচিন্কেল

যে কোনও %forum%একটি শীর্ষ স্তরের সেগমেন্ট হওয়া উচিত
অনারেট্রিকপনি

@ এক ট্রিক পনি - আমি আশা করছিলাম যে আপনি আমাকে প্রসঙ্গের জন্য কয়েকটি উচ্চ স্তরের পাথ অংশগুলি দেবেন।
মাইকচিন্কেল

উত্তর:


11

হালনাগাদ

যেহেতু এই ওয়ার্ডপ্রেস কোরটি লেখার ফলে 'do_parse_request'হুক যুক্ত হয়েছে যা ইউআরএল রাউটিংকে মার্জিতভাবে এবং WPক্লাস প্রসারিত করার প্রয়োজন ছাড়াই পরিচালনা করতে পারে । আমি আমার 2014 আটলান্টা ওয়ার্ডক্যাম্প আলোচনায় " হার্ড ইউআরএল রাউটিং " শিরোনামে বিষয়টিকে গভীরভাবে কভার করেছি ; স্লাইডগুলি লিঙ্কটিতে উপলব্ধ।

মূল উত্তর

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

আমি যে উত্তরটি দিতে যাচ্ছি তা হ'ল একটি প্লাগইন যা আমি কল করছি যা ট্র্যাকের উপর এই প্রস্তাবেরWP_Extended ধারণার প্রমাণ (নোট করুন যে প্রস্তাবটি একটি জিনিস হিসাবে শুরু হয়েছিল এবং অন্যটিতে বিবর্তিত হয়েছে, তাই আপনাকে পুরো জিনিসটি কোথায় পড়তে হবে তা দেখতে হবে এটি নেতৃত্বে ছিল।)

মূলত ধারণাটি হল WPক্লাসটি সাবক্লাস করা , parse_request()পদ্ধতিটি ওভাররাইড করা এবং তারপরে $wpসাবক্লাসের একটি উদাহরণ সহ গ্লোবাল ভেরিয়েবল বরাদ্দ করা । তারপরে আপনার মধ্যে parse_request()আসলে নিয়মিত অভিব্যক্তির একটি তালিকা ব্যবহারের পরিবর্তে পথ সেগমেন্টের মাধ্যমে পথটি পরিদর্শন করুন যা অবশ্যই তাদের সম্পূর্ণরূপে URL এর সাথে মেলে।

সুতরাং এটি স্পষ্টভাবে বলতে গেলে, এই কৌশলটি parse_request()যুক্তরাজ্যের থেকে রেজিএক্স ম্যাচের জন্য যা পরীক্ষা করে এবং এর পরিবর্তে প্রথমে করশাসনের মেয়াদের ম্যাচগুলির সন্ধান করে তবে কেবলমাত্রparse_request() ওয়ার্ডপ্রেস ইউআরএল URL এর রাউটিং সিস্টেমের সম্পূর্ণ প্রতিস্থাপন এবং অক্ষত রেখে দেয় and বিশেষত $query_varsভেরিয়েবলের ব্যবহার ।

আপনার ব্যবহারের ক্ষেত্রে এই বাস্তবায়ন কেবলমাত্র ইউটিউব পাথ বিভাগগুলিকে ট্যাক্সনোমির শর্তগুলির সাথে তুলনা করে যেহেতু আপনার কেবলমাত্র প্রয়োজন। এই বাস্তবায়ন বর্গীকরণ সূত্র পিতা বা মাতা সন্তান শব্দটি সম্পর্ক সম্মান পদ inspects এবং যখন এটি একটি ম্যাচ খুঁজে বের করে এটা URL পথ নির্ধারণ (বিয়োগ সামনের এবং স্ল্যাশ trailing) থেকে $wp->query_vars['category_name'], $wp->query_vars['tag']বা $wp->query_vars['taxonomy']& $wp->query_vars['term']এবং এটি রোধ করা যাবে parse_request()পদ্ধতি WPবর্গ।

অন্যদিকে, যদি URL টি পথটি কোনও শ্রেণীবিন্যাসের শব্দের সাথে মেলে না তবে আপনি নির্দিষ্ট করেছেন এটি ক্লাসের parse_request()পদ্ধতিটি কল করে ওয়ার্ডপ্রেস পুনর্লিখন সিস্টেমে ইউআরএল রাউটিং যুক্তিকে প্রতিনিধিত্ব করে WP

WP_Extendedআপনার ব্যবহারের ক্ষেত্রে ব্যবহারের জন্য আপনাকে register_url_route()আপনার থিমের functions.phpফাইলের মধ্যে থেকেই ফাংশনটি কল করতে হবে :

add_action('init','init_forum_url_route');
function init_forum_url_route() {
  register_url_route(array('taxonomy'=>'forum'));
}

এখানে প্লাগইনটির উত্স কোডটি কী:

<?php
/*
Filename: wp-extended.php
Plugin Name: WP Extended for Taxonomy URL Routes
Author: Mike Schinkel
*/
function register_url_route($args=array()) {
  if (isset($args['taxonomy']))
    WP_Extended::register_taxonomy_url($args['taxonomy']);
}
class WP_Extended extends WP {
  static $taxonomies = array();
  static function on_load() {
    add_action('setup_theme',array(__CLASS__,'setup_theme'));
  }
  static function register_taxonomy_url($taxonomy) {
    self::$taxonomies[$taxonomy] = get_taxonomy($taxonomy);
  }
  static function setup_theme() { // Setup theme is 1st code run after WP is created.
    global $wp;
    $wp = new WP_Extended();  // Replace the global $wp
  }
  function parse_request($extra_query_vars = '') {
    $path = $_SERVER['REQUEST_URI'];
    $domain = str_replace('.','\.',$_SERVER['SERVER_NAME']);
    //$root_path = preg_replace("#^https?://{$domain}(/.*)$#",'$1',WP_SITEURL);
$root_path = $_SERVER['HTTP_HOST'];

    if (substr($path,0,strlen($root_path))==$root_path)
      $path = substr($path,strlen($root_path));
    list($path) = explode('?',$path);
    $path_segments = explode('/',trim($path,'/'));
    $taxonomy_term = array();
    $parent_id = 0;
    foreach(self::$taxonomies as $taxonomy_slug => $taxonomy) {
      $terms = get_terms($taxonomy_slug);
      foreach($path_segments as $segment_index => $path_segment) {
        foreach($terms as $term_index => $term) {
          if ($term->slug==$path_segments[$segment_index]) {
            if ($term->parent!=$parent_id) { // Make sure we test parents
              $taxonomy_term = array();
            } else {
              $parent_id = $term->term_id; // Capture parent ID for verification
              $taxonomy_term[] = $term->slug; // Collect slug as path segment
              unset($terms[$term_index]); // No need to scan it again
            }
            break;
          }
        }
      }
      if (count($taxonomy_term))
        break;
    }
    if (count($taxonomy_term)) {
      $path = implode('/',$taxonomy_term);
      switch ($taxonomy_slug) {
        case 'category':
          $this->query_vars['category_name'] = $path;
          break;
        case 'post_tag':
          $this->query_vars['tag'] = $path;
          break;
        default:
          $this->query_vars['taxonomy'] = $taxonomy_slug;
          $this->query_vars['term'] = $path;
          break;
      }
    } else {
      parent::parse_request($extra_query_vars); // Delegate to WP class
    }
  }
}
WP_Extended::on_load();

পিএস কভেট # 1

যদিও কোনও প্রদত্ত সাইটের জন্য আমি এই কৌশলটি উজ্জ্বলতার সাথে কাজ করে বলে মনে করি তবে এই কৌশলটি অন্যদের ব্যবহারের জন্য WordPress.org এ বিতরণ করার জন্য কোনও প্লাগইন ব্যবহার করা উচিত নয় । এটি যদি ওয়ার্ডপ্রেস ভিত্তিক কোনও সফ্টওয়্যার প্যাকেজের মূল অংশে থাকে তবে তা ঠিক আছে। অন্যথায় এই কৌশলটি কোনও নির্দিষ্ট সাইটের ইউআরএল রাউটিংয়ের উন্নতির মধ্যে সীমাবদ্ধ হওয়া উচিত ।

কেন? কারণ শুধুমাত্র একটি প্লাগইন এই কৌশলটি ব্যবহার করতে পারে । যদি দুটি প্লাগইন এটি ব্যবহার করার চেষ্টা করে তবে তারা একে অপরের সাথে বিরোধ করবে।

একদিকে যেমন এই কৌশলটি প্রযোজ্য প্রতিটি ব্যবহারের ক্ষেত্রে যে পদ্ধতিটি প্রয়োজন হতে পারে তা হ্যান্ডেল করার জন্য প্রসারিত করা যেতে পারে এবং অবিলম্বে আমি ফাঁকা সময় বা এমন কোনও ক্লায়েন্ট খুঁজে পেতে পারি যেটি সময় নিতে পারে তার স্পনসর করতে পারে সম্পূর্ণ জেনেরিক প্রয়োগ বাস্তবায়ন।

ক্যাভেট # 2

আমি এটি ওভাররাইড করার জন্য লিখেছিলাম parse_request()যা একটি খুব বড় ফাংশন, এবং এটি সম্ভবত সম্ভব যে আমি যে সম্পত্তি বা আমার দুটি বিশ্বব্যাপী $wpবস্তু সেট করেছিলাম তা মিস করেছি ... সুতরাং যদি কোন কাজ খুব খারাপ করে তোলে তবে আমাকে জানাতে হবে এবং আমি এতে খুশি হব এটি গবেষণা করুন এবং প্রয়োজনে উত্তরটি সংশোধন করুন।

যাই হোক ...


এটি লেখার পরে আমি বুঝতে পেরেছিলাম যে আমি সাধারণভাবে কর বিভাগের শর্তগুলির পরিবর্তে বিভাগগুলির জন্য পরীক্ষা করেছি তাই 'forum'
উপরেরগুলি শৈলীর

তাই আমি পূর্বের মন্তব্যে উল্লিখিত সমস্যাটির সমাধানের জন্য কোডটি আপডেট করেছি।
মাইকচিন্কেল

এই কাজটি পেতে পারি না ... আমাকে কি পুনরায় লেখার নিয়মগুলি পরিবর্তন করতে হবে?
onetrickpony

@ এক ট্রিক পনি - আরও কিছু ডায়াগোনস্টিক তথ্য সাহায্য করবে। :) তুমি কি চেষ্টা করেছ? আপনি যখন আপনার ব্রাউজারে ইউআরএল প্রবেশ করেন তখন কী হয়? আপনি কি চান্সের 'forums'পরিবর্তে তার কলমিকে কল করেছিলেন 'forum'? আপনি কি এই পৃষ্ঠাগুলির সাথে লিঙ্কযুক্ত ইউআরএলগুলি পরিবর্তন হওয়ার প্রত্যাশা করছেন (যদি হ্যাঁ, কোনও আশ্চর্যজনক বিষয় না যে, আমার
কোডগুলি

না, আমি ইউআরএলগুলি পরিবর্তন করতে পারি (আমার মনে হয় এটির শব্দ_ লিঙ্ক ফাংশন যা এর জন্য আমার হুক করা দরকার)। site/rootforum/কাজ করে, তবে site/rootforum/subforum/হয় না (404 ত্রুটি) ...
onetrickpony

7

সহজ, সত্যিই।

পদক্ষেপ 1: পুনরায় লেখার প্যারামিটারটি ব্যবহার করা একেবারেই বন্ধ করুন। আমরা আপনার নিজের লেখা আবার রোল করব।

'rewrite'=>false;

পদক্ষেপ 2: ভার্জোজ পৃষ্ঠা বিধি সেট করুন। এটি পৃষ্ঠার নীচে ক্যাচ-অল হওয়ার পরিবর্তে সাধারণ পৃষ্ঠাগুলিকে তাদের নিজস্ব নিয়ম করতে বাধ্য করে।

পদক্ষেপ 3: আপনার ব্যবহারের ক্ষেত্রে পরিচালনা করতে কিছু পুনর্লিখনের নিয়ম তৈরি করুন।

পদক্ষেপ 4: ম্যানুয়ালি ফ্লাশের নিয়মগুলি ঘটতে বাধ্য করুন। সবচেয়ে সহজ উপায়: সেটিংস-> পারমালিঙ্কে যান এবং সেভ বোতামটি ক্লিক করুন। আমি নিজের ব্যবহারের জন্য প্লাগইন অ্যাক্টিভেশন পদ্ধতির চেয়ে এটি পছন্দ করি, কারণ আমি যখনই আশেপাশের জিনিসগুলি পরিবর্তন করি তখনই আমি নিয়মগুলি ফ্লাশ করতে বাধ্য করতে পারি।

সুতরাং, কোড সময়:

function test_init() {
    // create a new taxonomy
    register_taxonomy(
        'forum',
        'post',
        array(
            'query_var' => true,
            'public'=>true,
            'label'=>'Forum',
            'rewrite' => false,
        )
    );

    // force verbose rules.. this makes every Page have its own rule instead of being a 
    // catch-all, which we're going to use for the forum taxo instead
    global $wp_rewrite;
    $wp_rewrite->use_verbose_page_rules = true;

    // two rules to handle feeds
    add_rewrite_rule('(.+)/feed/(feed|rdf|rss|rss2|atom)/?$','index.php?forum=$matches[1]&feed=$matches[2]');
    add_rewrite_rule('(.+)/(feed|rdf|rss|rss2|atom)/?$','index.php?forum=$matches[1]&feed=$matches[2]');

    // one rule to handle paging of posts in the taxo
    add_rewrite_rule('(.+)/page/?([0-9]{1,})/?$','index.php?forum=$matches[1]&paged=$matches[2]');

    // one rule to show the forum taxo normally
    add_rewrite_rule('(.+)/?$', 'index.php?forum=$matches[1]');
}

add_action( 'init', 'test_init' );

মনে রাখবেন যে এই কোডটি যুক্ত করার পরে, আপনি যখন Permalink নিয়মগুলি ফ্লাশ করতে যাবেন তখন সেটি সক্রিয় করা দরকার (সেটিংস-> পারমালিঙ্কসে পৃষ্ঠা সংরক্ষণ করে)!

আপনি নিয়মগুলি ফ্লাশ করে ডেটাবেসে সংরক্ষণ করার পরে / তারপরে আপনার ফোরামে = যা কিছু ট্যাক্সোনমি পৃষ্ঠাতে যাওয়া উচিত।

আপনি যদি নিয়মিত অভিব্যক্তি বুঝতে চান তবে পুনরায় লেখার নিয়মগুলি সত্যিই এতটা কঠিন নয়। আমি এই কোডগুলি তাদের ডিবাগ করার সময় সাহায্য করার জন্য ব্যবহার করি:

function test_foot() {
    global $wp_rewrite;
    echo '<pre>';
    var_dump($wp_rewrite->rules);
    echo '</pre>';
}
add_action('wp_footer','test_foot');

এইভাবে, আমি আমার পৃষ্ঠায় এক নজরে বর্তমান নিয়মগুলি দেখতে পাচ্ছি। কেবল মনে রাখবেন যে কোনও ইউআরএল দেওয়া আছে, সিস্টেমটি নিয়মের শীর্ষে শুরু হয় এবং মেলে না এমন কোনও আবিষ্কার না করা পর্যন্ত সেগুলি দিয়ে চলে যায়। ম্যাচটি তারপরে কোয়েরিটিকে আরও সাধারণ দেখায়? কী = মান সেটটিতে পুনরায় লেখার জন্য ব্যবহার করা হয়। এই কীগুলি ডাব্লুপি_কিউয়ারি আইটেমটিতে যা যায় তার মধ্যে বিশ্লেষণ করে। সহজ।

সম্পাদনা: সাইড নোট, এই পদ্ধতিটি কেবল তখনই কাজ করবে যদি আপনার সাধারণ কাস্টম পোস্ট স্ট্রাকচারটি ক্যাটাচল নয় এমন কিছু দিয়ে শুরু হয়, যেমন% বিভাগ% বা এর মতো কিছু। আপনার এটি স্ট্যাটিক স্ট্রিং বা একটি সংখ্যা সহ, যেমন% বছর% দিয়ে শুরু করা দরকার start এটি আপনার নিয়মে যাওয়ার আগে এটি আপনার URL টি ধরা আটকাতে।


আপনি যদি আপনার পুনর্লিখনের নিয়মগুলি সহজেই ডিবাগ করতে চান তবে আমি (আবার) আমার পুনর্লিখন বিশ্লেষক প্লাগইনটি সুপারিশ করি যা আপনাকে নিয়মগুলি চেষ্টা করে দেখতে ও ফ্লাইতে ক্যোয়ারী ভেরিয়েবলগুলি দেখতে দেয়।
জান ফ্যাব্রি

দুর্ভাগ্যক্রমে বর্তমান ইউআরএল পুনর্লিখন সিস্টেমটি ইউআরএল পাথের অন্তর্নিহিত গাছের কাঠামো অনুসরণ করে বনাম সমস্ত সম্ভাব্য URL প্যাটার্নগুলিকে একটি বৃহত তালিকার তুলনায় বাধ্য করে। বর্তমান সেটআপটি সুবিধামত শ্রেণির বা ফোরামের নাম হিসাবে আক্ষরিক একটি অ্যারের সাথে মেলে না ; আপনি জানেন যে এটি সমস্ত "পৃষ্ঠা" ইউআরএলকে প্রথমে মূল্যায়ন করতে বাধ্য করে। পাথ বিভাগের সাথে মিল এবং একাধিক উপায়ে মিলিয়ে (আক্ষরিক, বিভাগ, ট্যাগ, কর-শর্তাদি, ব্যবহারকারীর নাম, পোস্টের ধরণ, পোস্টের নাম, কলব্যাকস, ফিল্টার হুকস এবং শেষ অবধি রেজিএক্স) জটিলতার জন্য স্কেল আরও ভাল হবে, এবং আরও সহজ হবে বুঝতে.
মাইকচিন্কেল

মাইক: আসলে, এটি মোটেও বোঝা সহজ নয়, কারণ আপনি সেখানে প্রথম ক্লু ডব্লুটিএফ পাইনি। ইউআরএল রাউটিং সম্পর্কে আপনার ধারণাগুলি বিভ্রান্তিকর এবং কঠিন এবং সম্ভবত আপনি জানেন, আমি তাদের সাথে একমত নই। ফ্ল্যাট অনুসন্ধান আরও অর্থবোধ করে এবং আপনি এটির জন্য creditণ দেওয়ার প্রবণতা থেকে আরও নমনীয়। বেশিরভাগ লোকেরা তাদের ইউআরএলগুলিতে সমস্ত অযথা জটিলতা চান না এবং প্রায় কারওই এটির প্রয়োজন হয় না।
অটো

ধন্যবাদ, তবে আমি মনে করি আমি এর আগেও এটি চেষ্টা করেছি ( ওয়ার্ডপ্রেস.স্ট্যাকেক্সেঞ্জার.কম
সেকশনস

ভাগ্যক্রমে ওয়ার্ডপ্রেস উত্তরগুলি এখন যারা ইউআরএলগুলি নিয়ন্ত্রণ করতে চায় তাদের অবশেষে একটি ভয়েস পেতে দেয় এবং তারা অনেকগুলি (100+) বলে মনে হয়। তবে আমি সম্মান করি যে আপনি সম্পূর্ণ বাস্তবায়নের আগে আমার উদাহরণ অনুসরণ করতে পারবেন না। আমি পূর্বাভাস দিয়েছি, একবার আমি যে পদ্ধতির পক্ষে পরামর্শ দিচ্ছি তা একবার একটি প্লাগইনে সম্পূর্ণরূপে প্রয়োগ করা হয় এবং প্রায় 6-12 মাস পরে এটি ওয়ার্ডপ্রেস ভিত্তিক সিএমএস সাইটগুলির জন্য তাদের ইউআরএলগুলি রুট করার জন্য পছন্দসই উপায় হয়ে উঠবে। সুতরাং প্রায় 9 মাসের মধ্যে এই বিতর্কটি আবার শুরু করা যাক।
মাইকচিন্কেল

4

আপনি একাই WP_Rewrit ব্যবহার করে এটি করতে সক্ষম হবেন না, কারণ এটি শব্দ স্লাগ এবং পোস্ট স্লাগগুলির মধ্যে পার্থক্য করতে পারে না।

ট্যাক্সোনমিটির পরিবর্তে পোস্ট ক্যোয়ারী ভেরিট সেট করে আপনাকে 404 রোধ করতে এবং অনুরোধ করতে হবে।

এটার মতো কিছু:

function fix_post_request( $request ) {
    $tax_qv = 'forum';
    $cpt_name = 'post';

    if ( !empty( $request[ $tax_qv ] ) ) {
        $slug = basename( $request[ $tax_qv ] );

        // if this would generate a 404
        if ( !get_term_by( 'slug', $slug, $tax_qv ) ) {
            // set the correct query vars
            $request[ 'name' ] = $slug;
            $request[ 'post_type' ] = $cpt_name;
            unset( $request[$tax_qv] );
        }
    }

    return $request;
}
add_filter( 'request', 'fix_post_request' );

নোট করুন যে পোস্টের ধরণের আগে বিভাগের সংজ্ঞা দিতে হবে ।

এটি উল্লেখ করার জন্য এটি একটি ভাল সময় হবে যে একই ক্যোয়ারী ভার সহ একটি শ্রেণীবদ্ধ এবং একটি পোস্টের ধরণটি একটি খারাপ ধারণা।

এছাড়াও, আপনি যে পদগুলিতে শর্তাবলীর মতো একই স্লাগ রয়েছে এমন পোস্টগুলিতে পৌঁছাতে পারবেন না।


একমত যে একটি বর্গীকরণ সূত্র এবং একই ক্যোয়ারী Var সাথে একটি পোস্ট টাইপ থাকার একটি খারাপ ধারণা, কিন্তু যে পারে একটি বর্গীকরণ সূত্র এবং একই নামের সাথে একটি পোস্ট টাইপ থাকার লোকদের পরোক্ষভাবে একটি খারাপ ধারণা, যে ক্ষেত্রে হয় না। যদি একই নাম ব্যবহার করা হয় তবে দুজনের মধ্যে কেবল একটিরই ক্যোয়ারি ভেরি হওয়া উচিত।
মাইকচিন্কেল

2

আমি শীর্ষ স্তরের বিড়াল প্লাগইনের কোডটি একবার দেখে নিই:

http://fortes.com/projects/wordpress/top-level-cats/

আপনি সহজেই তা মানিয়ে নিতে পারেন তাই এটি পরিবর্তন করে আপনার কাস্টম ট্যাক্সনোমি স্লাগের সন্ধান করছে

$category_base = get_option('category_base');

লাইনে 74 লাইকের মতো কিছুতে:

$category_base = 'forums';

বিভাগগুলির জন্য কাজ করতে পারে, তবে এটি কাস্টম ট্যাক্সনোমির পক্ষে হয় না (কমপক্ষে wp 3.1 এ) ... আমি ইউআরএলগুলি পরিবর্তন করতে পেরেছি, তবে আমি 404 ত্রুটি
পেয়েছি

2

আমি কাস্টম পোস্ট পারমালিঙ্কস প্লাগইনটি একবার দেখে পরামর্শ দিই । আমার এখনই পরীক্ষার জন্য সময় নেই, তবে এটি আপনার পরিস্থিতির সাথে সহায়তা করতে পারে।


এটি নয়, এটি কেবল পোস্টগুলি পরিচালনা করে, ট্যাক্সোনমিগুলি নয়, এমনকি যদি এটি হয় তবে আমাকে আগে এক ধরণের উপসর্গ যোগ করতে হবে %forum%, যা আমি এড়াতে
চাইছিলাম

2

যেহেতু আমি আপনার অন্যান্য প্রশ্নের সাথে পরিচিত , আমি সেটিকে মনে রেখে উত্তর দেব।

আমি এটি মোটেও পরীক্ষা করে দেখিনি, তবে আপনি যে সমস্ত পারমাস্ট্রাক্টগুলি চান তা নিবন্ধ করার পরে আপনি যদি ঠিক একবার এটি কার্যকর করেন তবে এটি কার্যকর হতে পারে .:

class RRSwitcher {
  var $rules;
  function RRSwitcher(){
    add_filter( 'topic_rewrite_rules', array( $this, 'topics' ) );
    add_filter( 'rewrite_rules_array', array( $this, 'rules' ) );
  }
  function topics( $array ){
    $this->rules = $array;
    return array();
  }
  function rules( $array ){
    return array_merge( (array)$array, (array)$this->rules );
  }
}
$RRSwitcher = new RRSwitcher();
global $wp_rewrite;
$wp_rewrite->use_verbose_rules = true;
$wp_rewrite->flush_rules();

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


চেষ্টা করে দেখুন, কিছুই পরিবর্তন হয়নি
onetrickpony


2

এটি ট্যাক্সোনমিগুলির জন্য কাজ করবে কিনা তা নিশ্চিত নয় তবে এটি কাস্টম পোস্টের ধরণের জন্য কাজ করে

যদিও এটি 2 বছরের জন্য আপডেট করা হয়নি, নীচের প্লাগইনটি আমার জন্য কাজ করেছে: http://wordpress.org/plugins/remove-slug-from-custom-post-type/

এফওয়াইআই আমি 3.9.1ডাব্লুপি টাইপ দিয়ে ডাব্লুপি চালাচ্ছি1.5.7


2

স্লাগের জন্য মান হিসাবে স্ল্যাশ ব্যবহার করুন ... 100% কাজ করছে

'rewrite' => array(
    'slug'       => '/', 
    'with_front' => FALSE
 ),

2
মোটেও তা নয়, এর ফলে pageপোস্টের সবগুলিই 404 হয়ে যায়
মিলো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.