क्या कोई ऐसा पृष्ठ है जो विवरण देता है कि वास्तव में वर्डप्रेस यूआरएल के लिए स्लग कैसे उत्पन्न करता है? मैं एक स्क्रिप्ट लिख रहा हूं, जो कि वर्डप्रेस जेनरेट के समान URL स्लग उत्पन्न करने की आवश्यकता है।
क्या कोई ऐसा पृष्ठ है जो विवरण देता है कि वास्तव में वर्डप्रेस यूआरएल के लिए स्लग कैसे उत्पन्न करता है? मैं एक स्क्रिप्ट लिख रहा हूं, जो कि वर्डप्रेस जेनरेट के समान URL स्लग उत्पन्न करने की आवश्यकता है।
जवाबों:
बल्ले से, मैं आपको एक पेज / ट्यूटोरियल / प्रलेखन नहीं दे सकता कि WP स्लग कैसे उत्पन्न होते हैं, लेकिन sanitize_title()
फ़ंक्शन पर एक नज़र डालें ।
फ़ंक्शन नाम से गलत प्रभाव न डालें, इसका अर्थ पृष्ठ / पोस्ट शीर्षक के रूप में आगे के उपयोग के लिए किसी शीर्षक को पवित्र करना नहीं है । यह एक शीर्षक स्ट्रिंग लेता है और इसे URL में उपयोग करने के लिए लौटाता है:
ऐसे किनारे मामले हो सकते हैं जहां कोर कुछ अतिरिक्त करता है (आपको यह सत्यापित करने के लिए स्रोत को देखना sanitize_title()
होगा कि हमेशा वही उत्पन्न होता है जिसकी आप अपेक्षा करते हैं), लेकिन यह कम से कम 99% को कवर करना चाहिए, यदि सभी मामले नहीं ।
sanitize_title
फ़ंक्शन में भी लागू फ़िल्टर द्वारा किया गया है , या यह कि फ़ंक्शन चलने के बाद किसी और चीज़ से नियंत्रित किया गया है या नहीं।
sanitize_title
-filter है कि एक को बाहर की जाँच करने की जरूरत है। लेकिन अन्य संबंधित कार्य भी हैं । मुझे वास्तव में इस बारे में कोई जानकारी नहीं थी। कभी-कभी ऐसा लगता SimplePie
है कि WP_Rewrite
बात समझने की तुलना में आसान है। Btw: टोस्चो "मंकीमैन रीराइट एनालाइजर" को एकीकृत करने का काम करता है। यहीं से चीजें वास्तव में दिलचस्प होने लगती हैं।
आप इस फ़ंक्शन का उपयोग कर सकते हैं:
static public function slugify($text)
{
// replace non letter or digits by -
$text = preg_replace('~[^\pL\d]+~u', '-', $text);
// transliterate
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
// remove unwanted characters
$text = preg_replace('~[^-\w]+~', '', $text);
// trim
$text = trim($text, '-');
// remove duplicate -
$text = preg_replace('~-+~', '-', $text);
// lowercase
$text = strtolower($text);
if (empty($text)) {
return 'n-a';
}
return $text;
}
अपनी तरह का wp url sanitize function काम करता है।
वर्डप्रेस में बनाया गया कोई भी डेवलपर मोड अलग नहीं है WP_DEBUG
, जो इस मामले में आपकी बहुत मदद नहीं करता है। मूल रूप से WP "रिवाइटर एपीआई" का उपयोग करता है , जो कि WP_Rewrite
क्लास के लिए एक फ़ंक्शन आधारित, निम्न स्तर का आवरण है , जिसके बारे में आप कोडेक्स में पढ़ सकते हैं । global $wp_rewrite
वस्तु आपकी सेवा में खड़ा वर्ग के साथ यह या परस्पर प्रभाव का निरीक्षण करने के।
Toschos "T5 Rewrite" -lugin और Jan Fabrys "Monkeyman Rewrite विश्लेषक" -lugin आपका मार्ग दर्शन करेंगे। मैंने इसे "मंकीमैन रीराइट एनालाइजर" के साथ सुचारू रूप से एकीकृत करने के लिए "टी 5 रीराइट" के लिए एक छोटा सा विस्तार लिखा है, जिसे आप यहां जीथब पर "टी 5 रीराइट" रेपो विकी में पा सकते हैं ।
"मंकीमैन" -प्लगिन एक नया पृष्ठ जोड़ता है, जो टूल के तहत व्यवस्थापक यूआई मेनू में दर्ज किया गया है । "T5 पुनर्लेखन" -plugin के लिए एक नया मदद टैब कहते हैं सेटिंग्स > स्थायी लिंक में पेज। मेरा एक्सटेंशन बताए गए टूल- पेज में सहायता टैब भी जोड़ता है।
यहां "T5 रिवाइराइट" -plugins टैब कंटेंट की तरह दिखने में मदद करने का स्क्रीनशॉट है।
Vorlage = पैटर्न | बेस्चेरीबंग = व्याख्या | बेसिकली = उदाहरण
"T5 रिवाइराइट" -plugin एक अद्भुत काम करता है जिसकी मदद से आप पुनर्लेखन वस्तु का निरीक्षण कर सकते हैं। और यह और भी अधिक है: यह नई संभावनाओं को जोड़ता है। इसलिए यह मेरे मूल प्लगइन्स पैकेज का कम से कम (मेरी स्थापनाओं में) हिस्सा है।
वास्तव में, यदि आप कोर फ़ंक्शन wp_insert_post (पोस्ट.php) देखते हैं, तो आप देखेंगे कि यह निम्न कार्य करता है:
$data['post_name'] = wp_unique_post_slug( sanitize_title( $data['post_title'], $post_ID ), $post_ID, $data['post_status'], $post_type, $post_parent );
$wpdb->update( $wpdb->posts, array( 'post_name' => $data['post_name'] ), $where );
ध्यान देने योग्य बात यह है कि wp_unique_post_slug और sanitize_title दोनों का उपयोग करता है:
wp_unique_post_slug( sanitize_title(
एक पुराने प्रश्न को फिर से शुरू करने के लिए क्षमा करें, लेकिन मुझे इसकी आवश्यकता समान थी क्योंकि यह विधि मेरे लिए पूरी तरह से काम करती है:
$some_string = "DON'T STOP ME NOW!";
$slug = sanitize_title(sanitize_title($some_string, '', 'save'), '', 'query');
echo $slug; // dont-stop-me-now
यह विधि एक दोहरे स्वच्छताकरण का उपयोग करती है।
पहले वाला save
मोड का उपयोग करता है, जहां HTML और PHP टैग छीन लिए जाते हैं, और उच्चारण हटा दिए जाते हैं (उच्चारण वर्णों को गैर-उच्चारण समकक्षों के साथ बदल दिया जाता है)।
दूसरा query
मोड सुनिश्चित करता है कि सभी रिक्त स्थान डैश -
और अन्य विराम चिह्न हटा दिए गए हैं।
आशा है कि यह किसी की मदद करता है! :)