कस्टम पोस्ट प्रकार स्लग / पेज स्लग संघर्ष - पेज पर आरक्षित स्लग के उपयोग को रोकें?


13

मेरे पास अपने विषय में एक कस्टम पोस्ट पोर्टफोलियो (स्लग पोर्टफोलियो) है और एक चीज को छोड़कर सभी अच्छी तरह से काम कर रहे हैं। जब लोग पोर्टफोलियो के स्लग के साथ एक पेज बनाते हैं, उदाहरण के लिए: example.com/portfolio, थीम सोचती है कि मैं कस्टम पोस्ट प्रकार संग्रह पृष्ठ का उपयोग करना चाहता हूं, न कि संपादक में मेरा पेज बनाया गया है।

क्या मैं किसी तरह से स्लग पोर्टफोलियो को "आरक्षित" कर सकता हूं, जब यह सुनिश्चित करने के लिए पेज सहेजे जाते हैं कि इसका उपयोग कभी नहीं किया जाए, शायद इसका नाम बदलकर पोर्टफोलियो-पेज कर दिया जाए?

मेरी परियोजना इस ट्यूटोरियल में बताए गए तरीकों का उपयोग करती है, यहाँ मैं जिस संघर्ष की बात कर रहा हूँ, वह है:

"कोड को पैच करने से परे यहां एक और पकड़ है जिसमें आप अपने पेज को अपने कस्टम पोस्ट प्रकार के स्लग के रूप में एक ही चीज़ नहीं कह सकते हैं। अपने कस्टम पोस्ट प्रकार के स्लग को आरक्षित कीवर्ड के रूप में सोचें; हालांकि, आप कर सकते हैं आपके पृष्ठ का शीर्षक आपके कस्टम पोस्ट प्रकार स्लग के समान ही है जब तक आपका पृष्ठ स्लग कुछ अलग है। " - http://wp.tutsplus.com/tutorials/custom-post-type-pagination-chaining-method/

किसी भी सलाह के लिए धन्यवाद!


एक विकल्प जो मैं देख रहा हूं वह यह होगा कि इसे register_post_type () init: 'rewrite' => array ('slug' => 'पोर्टफोलियो', 'with_front' => true) से हटा दें, और बस 'rewrite' => false और बस बदसूरत "एकल" पोर्टफोलियो आइटम के साथ रहते हैं।
hhins

अपने प्रश्न के लिए वोट करें क्योंकि मैं भी उत्तर जानना चाहता हूं! मैंने कई बार कस्टम पोस्ट के साथ काम किया है, लेकिन मैंने कभी इस पर ध्यान नहीं दिया, और अब आपके प्रश्न को पढ़ने के बाद, मैंने इसे आज़माया। आप सही हैं, वर्डप्रेस यहाँ उलझन में है!
रुटविक गांगुर्ड

जवाबों:


13

निम्नलिखित 2 फ़िल्टर आपको तब हुक करने की अनुमति देते हैं जब वर्डप्रेस स्लग की जाँच करता है और फ़ंक्शन में wp_unique_post_slug () wp- / पोस्ट.php फ़ाइल में पाया जाता है।

2 फिल्टर हैं, एक पदानुक्रमित पदों के लिए और एक गैर-पदानुक्रमित के लिए। पदानुक्रमित फ़िल्टर पोस्ट माता-पिता के लिए आईडी प्रदान करता है इसलिए यदि $ post_parent 0 है, तो आप जानते हैं कि यह "आधार" पोस्ट है।

यदि आप अपने तर्क में विशिष्ट प्रकार के पोस्ट जोड़ना चाहते हैं तो फ़िल्टर $ पोस्ट_टाइप भी पास करते हैं।

"सही" वापस करके, आप वर्डप्रेस को बता रहे हैं कि यह स्लग खराब है, इसलिए वर्डप्रेस एक प्रत्यय पर जोड़ता है, जैसे कि यदि आप हमें पोस्ट नाम / स्लग की कोशिश कर रहे हैं जो पहले से ही लिया गया है।

add_filter( 'wp_unique_post_slug_is_bad_hierarchical_slug', 'portfolio_is_bad_hierarchical_slug', 10, 4 );
function portfolio_is_bad_hierarchical_slug( $is_bad_hierarchical_slug, $slug, $post_type, $post_parent ) {
    if ( !$post_parent && $slug == 'portfolio' )
        return true;
    return $is_bad_hierarchical_slug;
}

add_filter( 'wp_unique_post_slug_is_bad_flat_slug', 'portfolio_is_bad_flat_slug', 10, 3 );
function portfolio_is_bad_flat_slug( $is_bad_flat_slug, $slug, $post_type ) {
    if ( $slug == 'portfolio' )
        return true;
    return $is_bad_flat_slug;
}

किसी कारण से मैं अभी भी उसी समस्या का सामना कर रहा हूं
टैन -007

1

'पोर्टफोलियो' के स्लग के साथ एक पेज बनाएं और इसे 'निजी' बनाएं। फ्यूचर के उपयोग से स्लग को जलाते समय इसे जनता से छिपाया जाएगा।


1

एक पृष्ठ पर अंक लगाना समस्या की जांच करते समय वास्तव में यह समस्या आई। हमारे पास एक समाचार मुखपृष्ठ (स्लग "समाचार") है और पृष्ठांकन विफल हो रहा है ... / समाचार / पृष्ठ / 2 / हमेशा प्राप्त करने का प्रयास '404 - नहीं मिला' के परिणामस्वरूप हुआ।

समस्या यह है कि हमारे समाचार कस्टम प्रकार को भी स्लग "समाचार" दिया गया था। बाद को बदलकर (उदाहरण के लिए "news_archive") समस्या को ठीक किया गया था। इसने मूल समाचार URL संदर्भों को अपरिवर्तित छोड़ दिया। समाचार मुखपृष्ठ स्लग को बदलना भी काम कर गया लेकिन फिर सभी URLS परिवर्तित स्लग को शामिल करेंगे।

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