2011-10-11 11 views
6

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

आम तौर पर, कस्टम टाइप परमालिंक तर्क का उपयोग slug परम के साथ किया गया है, लेकिन मुझे नहीं लगता कि मैं वहां एक गतिशील चर कैसे जोड़ सकता हूं।

http://codex.wordpress.org/Function_Reference/register_post_type

मेरा अनुमान है कि एक कस्टम समाधान आवश्यक है, लेकिन मुझे यकीन है कि क्या सबसे अच्छा unintrusive दृष्टिकोण होगा नहीं हूँ।

क्या इसके लिए कोई ज्ञात अभ्यास है या किसी ने हाल ही में कुछ बनाया है? मैं WP 3.2.1 बीटीडब्ल्यू का उपयोग कर रहा हूँ।

उत्तर

3

अधिक खोज के बाद मैं custom_post_link फ़िल्टर का उपयोग करके काफी सुरुचिपूर्ण समाधान बनाने में कामयाब रहा।

मान लें कि आपके पास projectclient वर्गीकरण के साथ कस्टम प्रकार है। इस हुक जोड़ें:

'rewrite' => array('slug' => '%client%') 

मुझे लगता है मैं पूछ रहा से पहले गहरी खोदा जाना चाहिए था, लेकिन कम से कम हम एक पूर्ण है:

function custom_post_link($post_link, $id = 0) 
{ 
    $post = get_post($id); 

    if(!is_object($post) || $post->post_type != 'project') 
    { 
    return $post_link; 
    } 
    $client = 'misc'; 

    if($terms = wp_get_object_terms($post->ID, 'client')) 
    { 
    $client = $terms[0]->slug; 

    //Replace the query var surrounded by % with the slug of 
    //the first taxonomy it belongs to. 
    return str_replace('%client%', $client, $post_link); 
    } 

    //If all else fails, just return the $post_link. 
    return $post_link; 
} 

add_filter('post_type_link', 'custom_post_link', 1, 3); 

तब, जब पंजीकरण के कस्टम प्रकार, rewrite आर्ग इस तरह सेट समाधान अब

+0

धन्यवाद! यह मेरे लिए काम किया। मुझे यह सुनिश्चित करना था कि मेरी '। Htaccess' फ़ाइल लिखने योग्य थी और फिर ठीक से काम करने के लिए' सेटिंग्स> पर्मलिंक्स 'और' परिवर्तन सहेजें 'में जाएं। 'Add_filter ('post_type_link', 'custom_post_link', 1, 3) में' 1' और '3' क्या हैं;'? एक बार फिर धन्यवाद! –

+0

मैंने सोचा कि मेरे पास सबकुछ काम कर रहा है, लेकिन अब मुझे अपने सभी नियमित/गैर-कस्टम-पोस्ट-टाइप पोस्ट पर 404 त्रुटि मिल रही है। यदि आपने इसके बारे में कोई विचार किया है तो मैंने इसके बारे में एक प्रश्न पोस्ट किया है: http://stackoverflow.com/questions/9722984/wordpress-custom-permalink-with-dynamic-taxonomy-for-custom-post-type। –

+0

'w__get_object_terms' के बजाय 'get_the_terms' का उपयोग करने की दृढ़ता से अनुशंसा करें क्योंकि 'get_the_terms' परिणाम कैश करेगा। 'Wp_get_object_terms' का उपयोग करने से परिणामस्वरूप 'post_link' फ़िल्टर हर बार चलने वाली क्वेरी होगी, जो संपादन पोस्ट स्क्रीन पर 10 गुना की तरह है। रेफरी https://core.trac.wordpress.org/browser/tags/3.9.1/src/wp-includes/category-template.php#L1238 – TomHarrigan

संबंधित मुद्दे