एक कस्टम पदानुक्रमिक टैक्सोनॉमी पर्मलिंक से टैक्सोनॉमी स्लग निकालें


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),  
  )
);

सामने के अंत में URL ऐसे दिखते हैं:

forums/general-discussion/sub-forum

मैं सामने वाले स्लग ("फ़ोरम") को कैसे हटा सकता हूं? यानी, URL को इसमें बदलें:

general-discussion/sub-forum

यदि मैं register_taxonomy () काम करने के लिए एक खाली स्लग तर्क पारित करता हूं, लेकिन यह इस वर्गीकरण के साथ जुड़े पोस्ट प्रकार के Permalinks के साथ मुद्दों का कारण बनता है


@ एक चाल टट्टू - क्या आपने 'slug' => 'forums'खाली छोड़ने के बजाय पूरी तरह से और बस होने की कोशिश की है 'rewrite' => array('with_front' => false, 'hierarchical' => true)? मुझे लगता है कि मेरे लिए अतीत में काम किया है। यह भी सुनिश्चित करें कि आप पर्मलिंक को फ्लश करते हैं।
eileencodes

कोशिश की है कि, और permalinks समान दिखते हैं। जोड़ना 'slug' => ''यह काम करता है, लेकिन फिर इस वर्गीकरण का उपयोग करने वाले पोस्ट 404s उत्पन्न करते हैं
onetrickpony

@ एक चाल टट्टू - 'सामान्य-चर्चा' के अलावा आपको अन्य शीर्ष स्तर के पथ खंडों की क्या आवश्यकता है?
माइकस्किंकेल

कोई भी %forum%शीर्ष स्तर का खंड होना चाहिए
onetrickpony

@ एक चाल टट्टू - मैं उम्मीद कर रहा था कि आपके संदर्भ के लिए मुझे कुछ अन्य शीर्ष स्तर पथ खंड दें।
माइकशिंकेल

जवाबों:


11

अद्यतन करें

इस लिखने के बाद से वर्डप्रेस कोर ने 'do_parse_request'हुक जोड़ा है जो URL रूटिंग को सुरुचिपूर्ण ढंग से और WPकक्षा को विस्तारित करने की आवश्यकता के बिना नियंत्रित करने की अनुमति देता है । मैंने अपने 2014 अटलांटा वर्डकैम्प टॉक में विषय को गहराई से कवर किया, जिसका शीर्षक " हार्डकोर यूआरएल रूटिंग " है ; स्लाइड लिंक पर उपलब्ध हैं।

मूल ANSWER

URL डिज़ाइन एक दशक से अधिक समय तक महत्वपूर्ण रहा है; मैंने कई साल पहले इसके बारे में एक ब्लॉग भी लिखा था । और वर्डप्रेस है, जबकि योग सॉफ्टवेयर का एक शानदार सा है दुर्भाग्य से यह URL रीराइट प्रणाली मस्तिष्क मृत से कुछ ही कम है (IMHO, निश्चित रूप से। :) , लोगों यूआरएल डिजाइन के बारे में देखभाल को देखने के लिए खुशी है कि वैसे भी!

मैं जो जवाब देने जा रहा हूं वह एक प्लगइन है जिसे मैं कॉल WP_Extendedकर रहा हूं जो कि ट्राक पर इस प्रस्ताव के लिए अवधारणा का प्रमाण है (ध्यान दें कि प्रस्ताव एक चीज के रूप में शुरू हुआ और दूसरे में विकसित हुआ, इसलिए आपको यह देखने के लिए पूरी बात पढ़ना होगा इसकी अध्यक्षता की गई।)

मूल रूप से विचार WPवर्ग को उप- वर्ग में रखना है, parse_request()विधि को ओवरराइड करता है, और फिर $wpउपवर्ग के उदाहरण के साथ वैश्विक चर असाइन करता है । फिर parse_request()आप वास्तव में नियमित अभिव्यक्तियों की सूची का उपयोग करने के बजाय पथ खंड द्वारा पथ का निरीक्षण करते हैं जो URL को उनकी संपूर्णता से मेल खाना चाहिए।

तो यह स्पष्ट रूप से बताने के लिए, यह तकनीक तर्क को सामने रखती है, parse_request()जिसमें URL-to-RegEx मैचों के लिए जाँच की जाती है और इसके बजाय पहली बार टैक्सोनॉमी टर्म मैचों की तलाश की जाती है, लेकिन यह केवलparse_request() वर्डप्रेस यूआरएल रूटिंग प्रणाली के बाकी हिस्सों को पूरी तरह से बदल देता है और छोड़ देता है जिसमें शामिल है और विशेष रूप से $query_varsचर का उपयोग ।

आपके उपयोग-मामले के लिए यह कार्यान्वयन केवल URL पथ सेगमेंट की तुलना टैक्सोनॉमी शर्तों से करता है क्योंकि आपको इसकी आवश्यकता है। इस कार्यान्वयन वर्गीकरण अभिभावक-बच्चे अवधि रिश्तों का सम्मान मामले की जांच करता है और जब यह एक मैच पाता है यह URL पथ प्रदान करती है (ऋण प्रमुख और ट्रेलिंग स्लैश) करने के लिए $wp->query_vars['category_name'], $wp->query_vars['tag']या $wp->query_vars['taxonomy']और $wp->query_vars['term']और यह नजरअंदाज parse_request()करने की विधि WPवर्ग।

दूसरी ओर यदि URL पथ एक वर्गीकरण से एक शब्द से मेल नहीं खाता है, तो आपने इसे निर्दिष्ट किया है कि यह 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();

PS CATAT # 1

यद्यपि किसी दिए गए साइट के लिए मुझे लगता है कि यह तकनीक शानदार ढंग से काम करती है, लेकिन इस तकनीक का उपयोग दूसरों के लिए WordPress.org पर वितरित किए जाने वाले प्लगइन के लिए किया जाना चाहिए । यदि यह वर्डप्रेस पर आधारित एक सॉफ्टवेयर पैकेज के मूल में है तो यह ठीक हो सकता है। अन्यथा यह तकनीक एक विशिष्ट साइट के लिए यूआरएल मार्ग को बेहतर बनाने तक सीमित होनी चाहिए ।

क्यूं कर? क्योंकि केवल एक प्लगइन इस तकनीक का उपयोग कर सकता है । यदि दो प्लगइन्स इसका उपयोग करने की कोशिश करते हैं तो वे एक-दूसरे के साथ संघर्ष करेंगे।

एक तरफ के रूप में इस रणनीति को व्यावहारिक रूप से हर उपयोग-केस पैटर्न को संभालने के लिए सामान्य रूप से विस्तारित किया जा सकता है जो आवश्यक हो सकता है और यही कि मैं जल्द से जल्द लागू करने का इरादा रखता हूं या तो मुझे खाली समय मिलता है या एक ग्राहक जो उस समय को प्रायोजित कर सकता है जो इसे ले जाएगा पूरी तरह से सामान्य कार्यान्वयन का निर्माण।

सेवत # २

मैंने इसे ओवरराइड करने के लिए लिखा था parse_request()जो एक बहुत बड़ा कार्य है, और यह काफी संभव है कि मैंने एक संपत्ति या दो वैश्विक $wpवस्तु को याद किया जो मुझे सेट करना चाहिए था .. इसलिए अगर कुछ काम करता है तो मुझे पता चल जाएगा और मुझे खुशी होगी। जरूरत पड़ने पर इसका अनुसंधान करें और उत्तर को संशोधित करें।

वैसे भी ...


यह लिखने के बाद मुझे एहसास हुआ कि मैंने सामान्य रूप से वर्गीकरण की शर्तों के बजाय श्रेणियों के लिए परीक्षण किया है, इसलिए उपरोक्त 'forum'वर्गीकरण के लिए काम नहीं करेगा, लेकिन मैं इसे बाद में आज काम करने के लिए संशोधित करूंगा ...
माइकस्किंकेल

इसलिए मैंने पूर्व टिप्पणी में वर्णित समस्या का समाधान करने के लिए कोड को अपडेट किया है।
माइकस्किंकेल

यह काम नहीं मिल सकता ... क्या मुझे फिर से लिखना नियम बदलने की आवश्यकता है?
onetrickpony

@ एक चाल की टट्टू - एक और अधिक नैदानिक ​​जानकारी में मदद मिलेगी। :) आपने क्या प्रयास किया? जब आप अपने ब्राउज़र में URL दर्ज करते हैं तो क्या होता है? क्या आपको प्रति मौका 'forums'इसके बजाय अपनी टैक्सोनोमी को कॉल करना था 'forum'? क्या आप उन पन्नों की अपेक्षा कर रहे हैं जो इन पृष्ठों को बदलने के लिए लिंक करते हैं (यदि हाँ, तो कोई आश्चर्य नहीं, मेरा कोड URL की छपाई को संबोधित नहीं करता है, केवल URL की अनुमार्गण है।)
माइकस्किंकेल

नहीं, मैं URL बदल सकता हूं (मुझे लगता है कि इसका टर्म_लिंक फ़ंक्शन जिसे मुझे उसके लिए हुक करने की आवश्यकता है)। site/rootforum/काम करता है, लेकिन site/rootforum/subforum/(404 त्रुटि) नहीं करता है ...
onetrickpony 19

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' );

याद रखें कि इस कोड को जोड़ने के बाद, जब आप पर्मलिंक नियमों (सेटिंग पर पेज को सहेजते हुए-> पर्मलिंक पर) फ्लश करते हैं, तो आपको इसे सक्रिय करने की आवश्यकता होती है!

आपके द्वारा नियमों को फ्लश करने और डेटाबेस में सहेजने के बाद, फिर / जो भी आपके फ़ोरम में जाना चाहिए = जो भी टैक्सोनॉमी पेज।

यदि आप नियमित रूप से अभिव्यक्ति को समझते हैं तो वास्तव में पुनर्लेखन नियम कठिन नहीं हैं। जब मैं उन्हें डीबग करने में मेरी मदद करने के लिए इस कोड का उपयोग करता हूं:

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

इस तरह, मैं अपने पृष्ठ पर एक नज़र में वर्तमान नियमों को देख सकता हूं। बस याद रखें कि कोई भी URL दिया गया है, सिस्टम नियमों के शीर्ष पर शुरू होता है और उनके माध्यम से नीचे जाता है जब तक कि वह एक मैच नहीं पाता। मैच का उपयोग तब क्वेरी को फिर से सामान्य देखने के लिए किया जाता है? कुंजी = मान सेट। WP_Query ऑब्जेक्ट में जाने पर उन कुंजियों को पार्स किया जाता है। सरल।

संपादित करें: साइड नोट, यह विधि शायद तभी काम करेगी जब आपकी सामान्य कस्टम पोस्ट संरचना किसी ऐसी चीज से शुरू होती है, जो कैटचेल नहीं है, जैसे% श्रेणी% या ऐसा कुछ। आपको इसे स्थिर स्ट्रिंग या संख्यात्मक के साथ शुरू करने की आवश्यकता है, जैसे% वर्ष%। यह आपके नियमों को प्राप्त करने से पहले अपने URL को पकड़ने से रोकने के लिए है।


यदि आप अपने पुन: लिखना नियमों को आसान बनाना चाहते हैं, तो मैं (फिर से) मेरे पुन: लिखने वाले एनालाइज़र प्लगइन की सलाह देता हूं, जिससे आप नियमों को आज़मा सकते हैं और फ्लाई पर क्वेरी चर देख सकते हैं।
Jan Fabry

दुर्भाग्य से वर्तमान URL फिर से लिखना प्रणाली URL पथ के अंतर्निहित पेड़ संरचना के बाद सभी संभावित URL पैटर्न को एक बड़ी सूची में समतल करने के लिए मजबूर करता है। वर्तमान सेटअप आसानी से श्रेणियों, या मंच के नाम जैसे शाब्दिकों की एक सरणी से मेल नहीं खा सकता है ; जैसा कि आप जानते हैं कि यह सभी "पृष्ठ" URL को पहले मूल्यांकन करने के लिए मजबूर करता है। पथ खंड द्वारा मिलान करना और कई तरीकों से मिलान करना (शाब्दिक, श्रेणियों, टैग, कर-शब्द, उपयोगकर्ता नाम, पोस्ट प्रकार, पोस्ट नाम, कॉलबैक, फ़िल्टर हुक, और अंत में RegEx) की जटिलता जटिलता के लिए बेहतर होगी, और आसान हो जाएगा समझने के लिए।
माइकस्किंकेल

माइक: वास्तव में, यह समझना आसान नहीं है, क्योंकि मुझे पहला सुराग डब्ल्यूटीएफ नहीं मिला है जिसके बारे में आप बात कर रहे हैं। URL रूटिंग के आपके विचार भ्रामक और कठिन हैं, और जैसा कि आप शायद जानते हैं, मैं उनसे असहमत हूं। सपाट खोज अधिक समझ में आता है और जितना आप इसका श्रेय देते हैं उससे अधिक लचीला है। अधिकांश लोग अपने URL में सभी अनावश्यक जटिलताएं नहीं चाहते हैं, और लगभग किसी को भी इसकी आवश्यकता नहीं है।
ओटो

धन्यवाद, लेकिन मुझे लगता है कि मैंने पहले ही यह कोशिश कर ली थी ( wordpress.stackexchange.com/questions/9455/… )
onetrickpony

सौभाग्य से वर्डप्रेस अब जवाब की अनुमति देता है जो लोग करते हैं उनके URL के अभाव नियंत्रण करने के लिए अंत में एक आवाज है, और वे कई होने लगते हैं (100+)। लेकिन मैं इस बात का सम्मान करता हूं कि पूर्ण कार्यान्वयन से पहले आप मेरे उदाहरण का पालन करने में सक्षम नहीं होंगे। मैं भविष्यवाणी करता हूं कि, एक बार मैं जिस दृष्टिकोण की वकालत कर रहा हूं, वह पूरी तरह से एक प्लगइन में लागू है और लगभग 6-12 महीनों के बाद यह वर्डप्रेस-आधारित सीएमएस साइटों के लिए अपने यूआरएल को रूट करने का पसंदीदा तरीका बन जाएगा। तो लगभग 9 महीने में इस बहस को फिर से शुरू करें।
माइकस्किंकेल

4

आप केवल WP_Rrrite का उपयोग करके ऐसा नहीं कर पाएंगे, क्योंकि यह शब्द स्लग और पोस्ट स्लग के बीच अंतर नहीं कर सकता है।

आपको 'अनुरोध' में भी हुक लगाना होगा और 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' );

ध्यान दें कि टैक्सोनॉमी को पोस्ट प्रकार से पहले परिभाषित किया जाना है ।

यह इंगित करने का एक अच्छा समय होगा कि एक ही क्वेरी संस्करण के साथ एक वर्गीकरण और एक पोस्ट प्रकार एक खराब विचार है।

इसके अलावा, आप उन पदों तक नहीं पहुंच पाएंगे जिनमें एक ही स्थिति के समान स्लग है।


पर सहमत हुए कि एक वर्गीकरण और समान क्वेरी वर के साथ एक पोस्ट प्रकार होने अच्छा नहीं माना जाता है, लेकिन यह हो सकता है एक वर्गीकरण और एक ही नाम के साथ एक पोस्ट प्रकार के लोगों के लिए मतलब एक बुरा विचार है, इस स्थिति नहीं है। यदि समान नाम का उपयोग किया जा रहा है, तो दोनों में से केवल एक के पास एक क्वेरी संस्करण होना चाहिए।
17

2

मैं शीर्ष स्तर के बिल्लियों प्लगइन के कोड पर एक नज़र डालूंगा:

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

आप आसानी से इसे बदल सकते हैं, इसलिए इसे बदलकर अपने कस्टम टैक्सोनॉमी स्लग की तलाश कर सकते हैं

$category_base = get_option('category_base');

लाइन 74 पर कुछ इस तरह से:

$category_base = 'forums';

श्रेणियों के लिए काम कर सकते हैं, लेकिन यह कस्टम टैक्सोनॉमीज़ के लिए नहीं है (कम से कम wp 3.1 में) ... मैं URL बदलने में कामयाब रहा, लेकिन मुझे 404 त्रुटियां
मिलीं

2

मैं सुझाव दूंगा कि कस्टम पोस्ट पर्मलिंक्स प्लगइन पर एक नज़र डालें । मेरे पास अभी परीक्षण करने का समय नहीं है, लेकिन यह आपकी स्थिति में मदद कर सकता है।


यह नहीं है, यह केवल पदों को संभालता है, टैक्सोनॉमी को नहीं, और यहां तक ​​कि अगर ऐसा होता है, तो मुझे पहले किसी प्रकार के उपसर्ग को जोड़ना होगा %forum%, जो कि मैं बचने की कोशिश कर रहा हूं ...
onetrickpony

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/

FYI करें मैं 3.9.1WP प्रकारों के साथ WP चला रहा हूं1.5.7


2

स्लग के मूल्य के रूप में स्लैश का उपयोग करें ... 100% काम कर रहा है

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

2
काफी नहीं, यह page404 के बाद के सभी प्रकार का कारण बनता है।
मिलो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.