क्या कोई मुझे स्लग उत्पन्न करने के लिए एक फ़ंक्शन प्रदान कर सकता है?

Dec 30 2020

स्लग उत्पन्न करने के लिए Wordpress का उपयोग करने वाले फ़ंक्शन कई फ़ंक्शन और फ़िल्टर में बिखरे हुए हैं। मैं उन सभी को नहीं ढूंढ सकता। क्या कोई मुझे स्लग उत्पन्न करने के लिए एक एकल php फ़ंक्शन प्रदान कर सकता है? मुझे Wordpress की सभी कार्यप्रणालियों की आवश्यकता नहीं है, बस गैर-लैटिन वर्णों को एन्कोड करने और अवैध वर्णों को हटाने की आवश्यकता है जो url में अनुमत नहीं हैं।

यह पोस्ट एक फ़ंक्शन प्रदान करती है, लेकिन यह गैर-लैटिन वर्णों को संभाल नहीं सकती है।

धन्यवाद!

जवाब

1 TomJNowell Dec 30 2020 at 21:14

यह पोस्ट एक फ़ंक्शन प्रदान करती है, लेकिन यह गैर-लैटिन वर्णों को संभाल नहीं सकती है।

ऐसा इसलिए है क्योंकि URL में गैर-लैटिन / ASCII वर्ण नहीं हो सकते हैं।

ब्राउज़र आपको गैर-लैटिन वर्ण दिखा सकता है, लेकिन यह केवल एक उपयोगकर्ता इंटरफ़ेस सुविधा है।

उदाहरण के लिए, यदि आप इस विक्षनरी URL पर जाते हैं: https://en.wiktionary.org/wiki/わかもの#Japaneseतो आप URL URL को असली URL प्राप्त करने के लिए जापानी वर्णों को एन्कोड करते हैं: https://en.wiktionary.org/wiki/%E3%82%8F%E3%81%8B%E3%82%82%E3%81%AE#Japaneseफिर URL प्रदर्शित करते समय URL इसे डिकोड करता है। प्रतिशत चिह्नों वाला संस्करण वास्तविक URL है।

इसी तरह किसी भी अन्य गैर- ASCII वर्ण कोड, जैसे अरबी। यदि आप स्लग के साथ एक पोस्ट बनाते हैं わかもの, तो डेटाबेस को सहेजें और जांचें, आप नहीं देखेंगे わかもの, आप देखेंगे %e3%82%8f%e3%81%8b%e3%82%82%e3%81%ae। इसी तरह यूआई आपको जापानी वर्ण दिखाएगा, लेकिन यदि आप लिंक को कॉपी करते हैं, तो आपको एन्कोडेड संस्करण मिलता है।

अगर हम डेटाबेस को अपडेट करते हैं और पोस्ट के स्लग को बदल देते हैं, तो पोस्ट को わかものलोड नहीं किया जा सकता है, और हमें 404 मिलता है। ऐसा इसलिए है क्योंकि स्लग अमान्य है और यह उस यूआरएल से लोड नहीं हो सकता है जो स्लग से मेल खाता हो।

हां, मुझे गैर-लैटिन वर्णों को% xx के रूप में एन्कोड किया जाना चाहिए

आप की जरूरत है urlencodeयहecho urlencode( $slug )