क्या sanitize_title पोस्ट स्लग उत्पन्न करने के लिए पर्याप्त है?


16

मैं वर्डप्रेस स्लग पीढ़ी प्रवाह के बिना कुछ तारों के लिए स्लग उत्पन्न करना चाहता हूं। इसलिए, मैं यह जानना चाहता हूं कि साफ सुथरा पाने के लिए कौन से कार्य कहते हैं। मैंने sanitize_title () की कोशिश की, लेकिन परिणाम में यह% c2% a0 है।

जवाबों:


27

आप लगभग वहाँ हैं। आपको जिस फ़ंक्शन की आवश्यकता है वह sanitize_title_with_dashes ($ शीर्षक) है


1
हालांकि यह निश्चित रूप से सही प्रतीत होता है, मैं थोड़ा स्पष्ट नहीं हूँ कि sanitize_title_with_dashes sanitize_title करने के लिए अलग तरीके से क्या लगता है। sanitize_title में वेड्स भी जोड़े जा रहे हैं जहां व्हाट्सएप है ...
टिम मेलोन

7
यदि आप sanitize_title_with_dashes ($ शीर्षक) के लिए वर्डप्रेस कोडेक्स की जांच करते हैं , तो आप नोट देखेंगे 'यह विशेष उच्चारण पात्रों को प्रतिस्थापित नहीं करता है' जिसका अर्थ है कि इस तरह के अक्षर èäçआदि इस फ़ंक्शन के साथ रहेंगे।
झॉफमैन

कृपया ध्यान दें कि कुछ विशेष वर्णों sanitize_title_with_dashesको sanitize_titleछोड़ दें जो कुछ प्रणालियों को तोड़ सकते हैं। मैं चाहता हूं कि तार को कम करने में एक अधिक सार्वभौमिक दृष्टिकोण पर एक नज़र डालेंsanitize_html_class
GDY

2

ठीक है, पहले से ही एक उत्तर है, लेकिन मैं इसे थोड़ा विस्तार देना चाहता था, इसलिए यहां मेरे निष्कर्ष हैं:

यदि हम 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()पर्याप्त लगता है।


2

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()से विशेष वर्ण नहीं हटेंगे ।


यह सही उत्तर होना चाहिए
बयानाची जूल

0

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-ऊ-पीपी-_

तो जैसा कि आप देख सकते हैं कि वे बिल्कुल समान हैं। इसलिए यह उनमें एकमात्र अंतर प्रतीत होता है कि एक चार्ट वाले उच्चारण को सांकेतिक शब्दों में बदलना, जबकि दूसरा उन्हें प्रतिस्थापित करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.