हां, यह संभव है, लेकिन यदि rewrite => array('slug' => 'post_type')
पैरामीटर पैरामीटर का उपयोग करके एक कस्टम पोस्ट प्रकार बना रहा है , तो यह संभावना नहीं है कि आप स्लग को बदलने में सक्षम होने जा रहे हैं ।
जब भी कस्टम पोस्ट प्रकार बनाए जाते हैं, URL फिर से लिखना डेटाबेस को लिखा जाता है। जिसके आधार पर कार्रवाई कस्टम पोस्ट प्रकार (जैसे init एक्शन) के निर्माण को ट्रिगर करती है , वर्डप्रेस रीराइट नियमों को फ्लश करेगा और कस्टम पोस्ट प्रकार के स्लग को पुनर्स्थापित करेगा चाहे आप जो भी बदलाव करने का प्रयास करें।
उस ने कहा, आप कस्टम पोस्ट प्रकारों के लिए कस्टम स्लग प्रदान कर सकते हैं। निम्न उदाहरण मानता है कि आपके पास एक कस्टम पोस्ट प्रकार है movies
और आप /movies/
स्लग को बदलने का प्रयास कर रहे हैं /films/
।
पूर्ण होने के लिए, यहाँ movies
कस्टम फ़ंक्शन का उपयोग कस्टम पोस्ट प्रकार को परिभाषित करने के लिए किया जाता है । प्लगइन है कि आप संदर्भित कर रहे हैं कुछ इस तरह से किया जाना चाहिए:
function movies_register_post_type() {
register_post_type(
'movies',
array(
'labels' => array(
'name' => __('Movies'),
'singular_name' => __('Movie')
),
'public' => true,
'has_archive' => true,
'rewrite' => array(
'slug' => 'movies'
)
)
);
} // end example_register_post_type
add_action('init', 'movies_register_post_type');
आप मौजूदा पोस्ट प्रकार के आधार पर अपने स्वयं के कस्टम नियम प्रदान करके विकल्प तालिका को संशोधित कर सकते हैं।
असल में, हम यह करेंगे:
- नियमों का मौजूदा सेट लें और फिर अपने स्वयं के कस्टम स्लग के साथ अपना लिखें
- नए नियम को कस्टम पोस्ट प्रकार के स्लग की तुलना में उच्च प्राथमिकता दें
यहां बताया गया है कि आप यह कैसे कर सकते हैं:
function add_custom_rewrite_rule() {
// First, try to load up the rewrite rules. We do this just in case
// the default permalink structure is being used.
if( ($current_rules = get_option('rewrite_rules')) ) {
// Next, iterate through each custom rule adding a new rule
// that replaces 'movies' with 'films' and give it a higher
// priority than the existing rule.
foreach($current_rules as $key => $val) {
if(strpos($key, 'movies') !== false) {
add_rewrite_rule(str_ireplace('movies', 'films', $key), $val, 'top');
} // end if
} // end foreach
} // end if/else
// ...and we flush the rules
flush_rewrite_rules();
} // end add_custom_rewrite_rule
add_action('init', 'add_custom_rewrite_rule');
अब, आपके पास अपनी फिल्मों तक पहुंचने के दो तरीके होंगे:
/movies/Back-To-The-Future
/films/Back-To-The-Future
ध्यान दें कि मैं hooking की सलाह नहीं देते add_custom_rewrite_rule
में init
के रूप में यह बहुत जल्दी-जल्दी सक्रिय होगा कार्रवाई। यह सिर्फ एक उदाहरण है। फ़ंक्शन को लागू करने के लिए एक बेहतर स्थान थीम सक्रियण, प्लगइन सक्रिय, शायद save_post कार्रवाई, आदि पर निर्भर करेगा कि आपको क्या करने की आवश्यकता है, इसके आधार पर आपको केवल एक बार या कुछ ही समय में आग लगाने की आवश्यकता हो सकती है।
इस बिंदु पर, आप ' /movies/
स्लग ' का उपयोग करने के लिए कस्टम पोस्ट प्रकार के लिए पर्मलिंक्स को अपडेट करने पर विचार कर सकते हैं । उदाहरण के लिए, यदि आप नेविगेट करते हैं /films/
, तो आपको अपनी सभी फिल्मों की एक सूची दिखाई देगी, लेकिन शीर्षक पर मँडरा करने से पता चलेगा कि /movies/
स्लग अभी भी उपयोग किया जा रहा है।
एक कदम आगे जाने के लिए, आप तकनीकी रूप /movies/
से अपने /films/
समकक्ष के लिए पुनर्निर्देशित करने के लिए सभी लिंक को पकड़ने के लिए 301 पुनर्निर्देशित कर सकते हैं , लेकिन यह सब इस बात पर निर्भर करता है कि आप क्या करने का प्रयास कर रहे हैं।