कस्टम पोस्ट प्रकार और यह वर्गीकरण के लिए पर्मलिंक संरचना कैसे बदलें?


11

यह मेरे पास पहले के प्रश्न का एक रिपॉस्ट है, लेकिन मैं इसे और अधिक विवरणों में जाना पसंद करता हूं ताकि इसे पूरी तरह से हल किया जा सके।

इसलिए फिर से, (सामान्य) पदों के साथ पेर्मलिंक को बदलना सेटिंग> पर्मलिंक में जाने जितना आसान है और इसे किसी भी चीज में बदलकर, जैसे कि आप व्यापक रूप से उपयोग करते हैं %category%/%postname%.html। यह सब काम करता है। यदि केवल कस्टम पोस्ट प्रकार के लिए यह आसान था और यह टैक्सोनॉमी भी है।

तो यह वही है जो मुझे पूरा करना पसंद है।

  1. http://mywordpress.com/portfolio.html - सभी श्रेणियों में सभी पोस्ट प्रदर्शित करें।
  2. http://mywordpress.com/portfolio/music/ - इस श्रेणी के सभी पोस्ट प्रदर्शित करें।
  3. http://mywordpress.com/portfolio/music/trance/ - इस (बच्चे) श्रेणी में सभी पोस्ट प्रदर्शित करें।
  4. http://mywordpress.com/portfolio/music/trance/Tiesto.html - पोस्ट प्रदर्शित करें।

अब तक मुझे जो मिला वह निम्नलिखित है:

  1. सबसे पहले मैं एक बनाया custom_post_typeनामित परियोजना और एक taxonomy project_category
  2. मैंने एक पेज पोर्टफोलियो बनाया और इसे एक पेज टेम्प्लेट दिया जो सभी post_type = projectपोस्ट को सूचीबद्ध करेगा । मैं .html को पेजों के पर्मलिंक में कैसे जोड़ सकता हूँ? अब मैं http://mywordpress.com/portfolio से लिंक करता हूं जबकि मुझे http://mywordpress.com/portfolio.html चाहिए । यह पहले मुद्दे को हल करना चाहिए।
  3. तब चीजें कठिन हो जाएंगी, क्योंकि हम पहले से नहीं जानते हैं कि वहां कितनी उपश्रेणियाँ हैं, शायद कोई भी नहीं है। इसलिए हम जिस संरचना के बाद हैं portfolio/(CATEGORY PATH FROM TOP TO CHILD)/post.html। मैं अभी भी इस बिंदु पर अटका हुआ हूं। मुझे लगता है कि मुझे किसी तरह अंतिम श्रेणी को पथ में शामिल करना चाहिए और पास करना होगा कि project_category के साथ , जो एक taxonomy.php फ़ाइल में ले जाना चाहिए जहां मैं इसे ठीक से संसाधित कर सकता हूं।
  4. मैंने इससे न तो निबटा है और न ही इसे कुछ %postname%.htmlके अंत में कुछ करना चाहिए।

मुझे आशा है कि मेरी समस्या स्पष्ट है और बहादुर डेवलपर हैं जो मुझे इस समस्या से निपटने में मदद करेंगे जो मुझे पहले से ही चार पूर्ण दिनों तक व्यस्त रखता है!


1
पिछले प्रश्न में मैंने जो समाधान दिया था, उस तरीके से काम करना चाहिए था, अगर आपने इसे सही तरीके से लागू किया है। केवल एक चीज आप html भाग
मन्नी Fleurmond

हां, लेकिन यह एक विशिष्ट पथ पर बंद था, इसलिए केवल श्रेणी / उपश्रेणी / पृष्ठ जबकि उपश्रेणियाँ या इससे भी अधिक नहीं हो सकती हैं। यह अधिक गतिशील है।
मार्क

या मैंने इसे ठीक से लागू नहीं किया;)
मार्क

जवाबों:


4

ठीक है, मुझे लगता है कि मेरे पास एक समाधान हो सकता है। मुझे कोई अंदाजा नहीं है कि इसे पूरा करने का यह सही तरीका है, लेकिन अभी के लिए यह केवल एक चीज है जो काम करने लगती है।

add_filter('rewrite_rules_array', 'mmp_rewrite_rules');

function mmp_rewrite_rules($rules) {
    $newRules                               = array();
    $newRules['portfolio/(.+)/(.+?).html$'] = 'index.php?project=$matches[2]';
    $newRules['portfolio/(.+)/?$']          = 'index.php?project_category=$matches[1]'; 

    return array_merge($newRules, $rules);
}


add_filter('request', 'mmp_rewrite_request');

function mmp_rewrite_request($vars) {
    if (isset($vars['project_category'])) {
        if (strpos($vars['project_category'], '/') !== false) {
            $categories = explode('/', $vars['project_category']);
            $vars['project_category'] = $categories[count($categories) - 1];
        }
    }

    return $vars;
}

यदि हम किसी श्रेणी (वास्तव में एक पद) और एक पद पूछ रहे हैं तो अनुरोध फ़िल्टर फ़िल्टर करने का एक अच्छा तरीका है। यह केवल एक पुनर्लेखन नियम जोड़ने की अनुमति देता है और पोस्ट पेज प्राप्त करता है चाहे वह पोस्ट किसी श्रेणी, उपश्रेणी में हो या नहीं।
ZalemCitizen

1

2 अलग अलग तरीके:

* इस पोस्ट के निचले भाग में नोट देखें।


उदाहरण के लिए, आप ऐसी अनुमति संरचना चाहते हैं:
/ MAIN_CATEGORY / SUB_CAT_2 / Other_SUBCAT / my-post

सबसे पहले , आपको /% श्रेणी% /% postname% के लिए Permalinks सेट करने की आवश्यकता हो सकती है । फिर...




विधि 1:

(मानक श्रेणियां बना MAIN_CATEGORY, SUB_CAT_1, and etc..), और रजिस्टर कस्टम पोस्ट, इस पैरामीटर शामिल हैं:

'taxonomies'    => array('category'..)

और पर्मलिंक बदलने के लिए इस कोड का उपयोग करें: https://wordpress.stackexchange.com/a/195643/33667
फिर, एक CSTOM POST प्रकाशित करने के बाद (यदि एक श्रेणी के तहत संलग्न), URL होगा:
example.com/MAIN_CATEGORY/SUB_CAT_1/my-post



विधि 2:

( यदि आप सैकड़ों या हजारों पदों को प्रकाशित करने की योजना बनाते हैं, तो इस विधि की सलाह नहीं दी जाती है )

MAIN_CATEGORYइन मापदंडों सहित कस्टम पोस्ट (नाम ) दर्ज करें :

    "supports"      => array('page-attributes'......
    "hierarchical"  => true,

फिर, इस तरह से कस्टम पोस्ट प्रकाशित करें: ( नाम से कई कस्टम पोस्ट प्रकाशित करें । इसके बाद, जब आप किसी अन्य पोस्ट को प्रकाशित करते हैं, लेकिन माता-पिता के रूप में चुनते हैं ।
SUB_CAT_2, SUB_CAT_1..SUB_CAT_2





ps
1) यदि आप नौसिखिया हैं, तो समीक्षा करें: कस्टम पोस्ट रजिस्टर करें और TAXONOMY
2 के साथ कस्टम पोस्ट रजिस्टर करें ) यदि आपको उप-स्तरों के लिए खोज कार्यक्षमता की आवश्यकता होगी, तो कस्टम खोज क्वेरी का उपयोग करें


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