मैं वर्डप्रेस स्लग पीढ़ी प्रवाह के बिना कुछ तारों के लिए स्लग उत्पन्न करना चाहता हूं। इसलिए, मैं यह जानना चाहता हूं कि साफ सुथरा पाने के लिए कौन से कार्य कहते हैं। मैंने sanitize_title () की कोशिश की, लेकिन परिणाम में यह% c2% a0 है।
मैं वर्डप्रेस स्लग पीढ़ी प्रवाह के बिना कुछ तारों के लिए स्लग उत्पन्न करना चाहता हूं। इसलिए, मैं यह जानना चाहता हूं कि साफ सुथरा पाने के लिए कौन से कार्य कहते हैं। मैंने sanitize_title () की कोशिश की, लेकिन परिणाम में यह% c2% a0 है।
जवाबों:
आप लगभग वहाँ हैं। आपको जिस फ़ंक्शन की आवश्यकता है वह sanitize_title_with_dashes ($ शीर्षक) है
èäçआदि इस फ़ंक्शन के साथ रहेंगे।
sanitize_title_with_dashesको sanitize_titleछोड़ दें जो कुछ प्रणालियों को तोड़ सकते हैं। मैं चाहता हूं कि तार को कम करने में एक अधिक सार्वभौमिक दृष्टिकोण पर एक नज़र डालेंsanitize_html_class
ठीक है, पहले से ही एक उत्तर है, लेकिन मैं इसे थोड़ा विस्तार देना चाहता था, इसलिए यहां मेरे निष्कर्ष हैं:
यदि हम wp_insert_post()देखते हैं कि हम में एक नज़र है , तो $post_nameउपयोग wp_sanitize_title()(देखें wp-includes/post.php)
फ़ंक्शन में sanitize_title()हमारे पास एक फिल्टर है sanitize_title। यह दिलचस्प है, क्योंकि डिफ़ॉल्ट फ़िल्टर sanitize_title_with_dashes()इस फ़िल्टर (हुक) में झुका हुआ है wp-includes/default-filters.php।
<?php
echo sanitize_title( 'Â+ÄÖßáèäç' ) // aaeoessaeaec
?>
मैंने sanitize_title () की कोशिश की, लेकिन परिणाम में यह% c2% a0 है।
यह अजीब लगता है। इनपुट मूल्य जानना बहुत अच्छा होगा, लेकिन निम्नलिखित wp_insert_post() sanitize_title()पर्याप्त लगता है।
sanitize_title() लगता है केवल एक ही आप की जरूरत है।
Wp- / / default-filter.php लाइन 211 में आपको मिलेगा:
add_filter( 'sanitize_title', 'sanitize_title_with_dashes', 10, 3);
इसका मतलब है कि कॉलिंग sanitize_title()पहले सभी विशेष वर्णों को हटा देगा, फिर sanitize_titleफ़िल्टर लागू करें , इस प्रकार कॉलिंगsanitize_title_with_dashes()
जैसा कि @JHoffmann ने बताया, बस कॉल करने sanitize_title_with_dashes()से विशेष वर्ण नहीं हटेंगे ।
Websupporter के महान जवाब के अलावा मैं नीचे पाया:
आपके उपयोग के आधार पर यह निर्भर करेगा कि आपको क्या चाहिए।
sanitize_title() जैसा कि यह कहता है:
उच्चारण हटा दिए जाते हैं (उच्चारण वर्णों को गैर-उच्चारण समकक्षों के साथ बदल दिया जाता है)
... और sanitize_title_with_dashesकहते हैं:
ध्यान दें कि यह विशेष उच्चारण पात्रों को प्रतिस्थापित नहीं करता है
तो, इस उदाहरण स्ट्रिंग के साथ:Â+Ä Ö %%% ßá %20 oo %pp + -_^^#@!**()=[]|\/\'"<>?``~ èäç
sanitize_title() परिणाम:
आ-ओ-एसए% 20-ऊ-पीपी -_- eac
जैसा कि आप देख सकते हैं कि यह उच्चारण पात्रों को उनके गैर-उच्चारण समकक्षों के साथ बदल दिया है और इसने अन्य सभी गैर-अल्फ़ान्यूमेरिक वर्णों को हटा दिया है, %जिसके अलावा एक संख्या है, लेकिन आप देखेंगे कि इसे हटा दिया गया था जब यह एक पत्र द्वारा पीछा किया गया था; शायद यह इसलिए है क्योंकि यह इसे पहले से ही एन्कोडेड के रूप में मानता है । यह तब लागू किया जाता है जब आप %c3अपने स्ट्रिंग में डालने की कोशिश करते हैं, यह %c3एक वैध एन्कोडिंग अनुक्रम के रूप में इसे पट्टी नहीं करता है।
sanitize_title_with_dashes परिणाम:
% C3% A2% C3% a4-% C3% b6-% C3% 9 फ% C3% a1-% 20-ऊ-पीपी -_-% C3% A8% C3% a4% C3% a7
तो जैसा कि आप देख सकते हैं कि यह उच्चारण पात्रों को हटा नहीं है, लेकिन उन्हें एन्कोड किया गया है।
अब एक तार को बिना किसी उच्चारण वर्ण के देखें कि वे दोनों कैसे व्यवहार करते हैं ...
उदाहरण स्ट्रिंग: %%% building %20 oo %pp + -_^^#@!**()=[]|\/\'"<>?``~'
sanitize_title() परिणाम:
इमारत% 20-ऊ-पीपी-_
sanitize_title_with_dashes परिणाम:
इमारत% 20-ऊ-पीपी-_
तो जैसा कि आप देख सकते हैं कि वे बिल्कुल समान हैं। इसलिए यह उनमें एकमात्र अंतर प्रतीत होता है कि एक चार्ट वाले उच्चारण को सांकेतिक शब्दों में बदलना, जबकि दूसरा उन्हें प्रतिस्थापित करता है।