উত্তর:
তুমি অনেকটা সেখানে. আপনার যে ফাংশনটি প্রয়োজন তা হ'ল স্যানিটাইজ_ টাইটেল_উইথ_ড্যাশস ($ শিরোনাম)
èäç
প্রভৃতি অক্ষরগুলি এই ফাংশনটির সাথে স্থানে থাকবে।
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
?>
আমি স্যানিটাইজ_টাইটেল () চেষ্টা করেছিলাম তবে ফলতে এটি% c2% a0 ছেড়ে যায়।
এটা অদ্ভুত লাগছে। ইনপুট মানটি জেনে রাখা দুর্দান্ত হবে তবে নিম্নলিখিতটি wp_insert_post()
sanitize_title()
যথেষ্ট বলে মনে হচ্ছে।
sanitize_title()
আপনার একমাত্র প্রয়োজন বলে মনে হচ্ছে।
ডাব্লুপি-অন্তর্ভুক্ত / ডিফল্ট-ফিল্টারস.এফপি লাইন 211 এ আপনি পাবেন:
add_filter( 'sanitize_title', 'sanitize_title_with_dashes', 10, 3);
এর অর্থ হ'ল কলিং sanitize_title()
প্রথমে সমস্ত বিশেষ অক্ষর সরিয়ে ফেলবে, তারপরে sanitize_title
ফিল্টার প্রয়োগ করুন , এভাবে কল করাsanitize_title_with_dashes()
@ জেফফম্যান যেমন উল্লেখ করেছেন, কেবল কল করা sanitize_title_with_dashes()
বিশেষ অক্ষর মুছে ফেলবে না।
ওয়েবসাপ্টারের দুর্দান্ত উত্তরের পাশাপাশি আমি নীচেও পেয়েছি:
আপনার ব্যবহারের উপর নির্ভর করে এটি আপনার যা প্রয়োজন তা নির্ভর করবে।
sanitize_title()
এটা বলেছেন:
উচ্চারণগুলি সরানো হয় (উচ্চারণযুক্ত অক্ষরগুলি অ-উচ্চারণযুক্ত সমতুল্য দ্বারা প্রতিস্থাপন করা হয়)
... এবং sanitize_title_with_dashes
বলে:
দ্রষ্টব্য যে এটি বিশেষ উচ্চারণযুক্ত অক্ষরগুলি প্রতিস্থাপন করে না
সুতরাং, এই উদাহরণ স্ট্রিং সহ:Â+Ä Ö %%% ßá %20 oo %pp + -_^^#@!**()=[]|\/\'"<>?``~ èäç
sanitize_title()
ফলাফল:
এএ-O-sa-% 20 ওও-PP -_- eac
আপনি দেখতে পাচ্ছেন যে এটি উদ্বেগযুক্ত অক্ষরগুলিকে তাদের অ-উচ্চারণ সমতুল্যগুলির সাথে প্রতিস্থাপন করেছে এবং এটি %
একটি সংখ্যা অনুসরন করে অন্য সমস্ত অ-অক্ষরীয় অক্ষর বাদ দিয়েছে , তবে আপনি দেখতে পাবেন যে কোনও অক্ষর অনুসরণ করার পরে এটি সরানো হয়েছিল; সম্ভবত এটি কারণ এটি ইতিমধ্যে এনকোডড হিসাবে এটি উপলব্ধি করে । আপনি যখন %c3
আপনার স্ট্রিংয়ের মধ্যে সন্নিবেশ করানোর চেষ্টা করেন এটি প্রয়োগ করা হয়, এটি %c3
বৈধ এনকোডিং ক্রম হিসাবে এটি ছাঁটাই করে না ।
sanitize_title_with_dashes
ফলাফল:
% C3% A2% C3% a4-% C3% b6-% C3% 9f% C3% a1-% 20 ওও-PP -_-% C3% A8% C3% A4% C3% A7
সুতরাং আপনি দেখতে পাচ্ছেন এটি উচ্চারণযুক্ত অক্ষরগুলি সরেনি, তবে সেগুলি এনকোড করেছে।
এখন উভয় কীভাবে আচরণ করে তা দেখার জন্য কোনও উচ্চারণযুক্ত অক্ষরবিহীন একটি স্ট্রিংটি দেখি ...
উদাহরণ স্ট্রিং: %%% building %20 oo %pp + -_^^#@!**()=[]|\/\'"<>?``~'
sanitize_title()
ফলাফল:
building-% 20 ওও-PP-: _
sanitize_title_with_dashes
ফলাফল:
building-% 20 ওও-PP-: _
সুতরাং আপনি দেখতে পারেন যে তারা ঠিক একই। সুতরাং এগুলির মধ্যে কেবলমাত্র তফাতটি দেখা যায় যে একটি এনকোডগুলি উচ্চারণকৃত চার্টারগুলি অপরটি প্রতিস্থাপন করে।