कस्टम पोस्ट प्रकार URL पुनर्लेखन?


32

मैंने अपने पोर्टफोलियो प्रोजेक्ट्स के लिए एक कस्टम पोस्ट प्रकार सेट किया है। इसके लिए मुख्य URL स्थित है/projects/

अब मैंने भी अपने ब्लॉग पोस्ट /articles/*/को Permalink संरचना के लिए permalink सेटअप किया है । इसका मतलब यह है कि जब मैं किसी पोर्टफोलियो प्रोजेक्ट को देखने जाता हूं तो यूआरएल बदल जाता है/articles/projects/project-name/

मुझे पता है कि मेरे प्रोजेक्ट्स कस्टम पोस्ट प्रकार के लिए केवल पर्मलिंक को फिर से लिखने का एक तरीका होना चाहिए । लेकिन मैं URL स्लग घोषित करने में वाक्य रचना से अपरिचित हूँ - मुझे जो भी मदद मिल सकती है, उसकी सराहना करेंगे!

जवाबों:


42

जब आप कस्टम पोस्ट प्रकार को पंजीकृत करते हैं, तो आपको यह निर्दिष्ट करना होगा कि पुनर्लेखन नियम मौजूदा URL संरचना के साथ पूर्व निर्धारित नहीं होना चाहिए।

संक्षेप में, इसका मतलब है कि आपके register_post_typeकॉल में यह लाइन :

'rewrite' => array('slug' => 'projects'),

इस में बदलना चाहिए:

'rewrite' => array('slug' => 'projects','with_front' => false),

अधिक जानकारी के लिए, कोडेक्स प्रविष्टि पर दिए गए rewriteतर्क को देखेंregister_post_type

संपादित करें: बस यह सुनिश्चित कर लें कि, कोड को अपडेट करने के बाद, आप सेटिंग्स> पेरालिंक्स पर जाकर नियमों को फिर से लिखेंगे। अन्यथा आप अभी भी पुराने लिंक देखेंगे।


शानदार धन्यवाद! बस स्पष्ट करने के लिए, सभी मुझे फ्लशिंग नियमों के लिए करने की आवश्यकता है सेटिंग्स-> पेरामलिंक पृष्ठ पर जाएं और "परिवर्तन सहेजें", सही?
जेक

4
आपको परिवर्तनों को सहेजने की भी आवश्यकता नहीं है। यह केवल पर्मलिंक सेटिंग पृष्ठ को खोलने के लिए पर्याप्त है (यदि आपकी .htaccess फ़ाइल राइट है। यदि नहीं, तो परिवर्तन सहेजें दबाएं और कोड को अपने .htaccess में मैन्युअल रूप से कॉपी करें)
0x61696f

2
यह मेरे लिए काम नहीं करता है। मेरी परियोजनाएँ अभी भी जारी हैं example.com/projects/title-of-post। मैंने पर्मलिंक्स पेज का भी दौरा किया। ऐसा किसके कारण हो सकता है? मेरे में कोई पुनर्लेखन नियम नहीं हैं htaccess
देसी

वाह, धन्यवाद कि गायब हिस्सा था!
पर्मलिंक्स

मैं फिर से लिखे गए नियमों की धज्जियां उड़ाए बिना चीजों को बदलता रहा। पारितोषिक के लिए धन्यवाद!
तन-007

15

मुझे 3 दिन पहले यह समस्या थी, तब मैंने wp.tutsplus.com पर एक श्रृंखला भर में ठोकर खाई । मैंने आपके प्रश्न को बेहतर तरीके से समायोजित करने के लिए अपना स्वयं का कोड स्वैप किया, लेकिन इस श्रृंखला का अनुसरण करने के बाद मैंने इसे समाप्त किया। यह भी ध्यान रखें कि यह अप्रयुक्त है।

// sets custom post type
function my_custom_post_type() {
    register_post_type('Projects', array(   
       'label' => 'Projects','description' => '',
       'public' => true,
       'show_ui' => true,
       'show_in_menu' => true,
       'capability_type' => 'post',
       'hierarchical' => false,
       'publicly_queryable' => true,
       'rewrite' => false,
       'query_var' => true,
       'has_archive' => true,
       'supports' => array('title','editor','excerpt','trackbacks','custom-fields','comments','revisions','thumbnail','author','page-attributes'),
       'taxonomies' => array('category','post_tag'),
       // there are a lot more available arguments, but the above is plenty for now
    ));
}

add_action('init', 'my_custom_post_type');

// rewrites custom post type name
global $wp_rewrite;
$projects_structure = '/projects/%year%/%monthnum%/%day%/%projects%/';
$wp_rewrite->add_rewrite_tag("%projects%", '([^/]+)', "project=");
$wp_rewrite->add_permastruct('projects', $projects_structure, false);

सैद्धांतिक रूप से, आप $projects_structureचर में संग्रहीत URL में जो कुछ भी चाहते हैं, उसे स्वैप कर सकते हैं , बस वही है जो मैंने उपयोग करके समाप्त किया है।

सौभाग्य, और हमेशा की तरह - वापस आना सुनिश्चित करें और हमें बताएं कि यह कैसे काम करता है! :)


1
उत्तर जो केवल लिंक से बने होते हैं, आमतौर पर उन संसाधनों के रूप में अप्रभावी माने जाते हैं, जो भविष्य में मौजूद हो सकते हैं। सामग्री को सारांशित करें।
क्रिसगिटेरिटग्यु

काफी उचित, मैं एक उचित संशोधन पर काम करेंगे।
cmegown

11
वहां, अब मेरे जवाब में काम करने वाले कोड के समान कोड है जो मेरे पास एक उत्पादन वातावरण में है जो सफलतापूर्वक एक कस्टम पोस्ट प्रकार URL को फिर से लिखता है। आशा है कि यह अधिक उपयोगी साबित होता है!
बजे cmegown
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.