স্যানিটাইজ_টাইটেল কি পোস্ট স্লাগগুলি তৈরি করতে যথেষ্ট?


16

আমি ওয়ার্ডপ্রেস স্লাগ জেনারেশন প্রবাহ ছাড়াই কিছু স্ট্রিংয়ের জন্য স্লাগ তৈরি করতে চাই। অতএব, আমি জানতে চাই যে কোন ফাংশন এটি একটি ঝরঝরে স্লাগ পেতে কল করে। আমি স্যানিটাইজ_টাইটেল () চেষ্টা করেছিলাম তবে ফলতে এটি% c2% a0 ছেড়ে যায়।

উত্তর:


27

তুমি অনেকটা সেখানে. আপনার যে ফাংশনটি প্রয়োজন তা হ'ল স্যানিটাইজ_ টাইটেল_উইথ_ড্যাশস ($ শিরোনাম)


1
এটি স্পষ্টতই সঠিক হিসাবে উপস্থিত হওয়ার পরে, স্যানিটাইজ_উইন_ড্যাশগুলি স্যানিটাইজ_টাইটেলগুলিতে আলাদাভাবে কি বলে মনে হচ্ছে তা সম্পর্কে আমি কিছুটা অস্পষ্ট। স্যানিটাইজ_টাইটেল হ'ল স্পেস যেখানে ড্যাশ যুক্ত করছে ...
টিম মালোন

7
আপনি যদি স্যানিটাইজ_টাইটেল_উইথ_ড্যাশস ($ শিরোনাম) জন্য ওয়ার্ডপ্রেস কোডেক্স পরীক্ষা করে থাকেন তবে আপনি নোটটি দেখতে পাবেন 'এটি বিশেষ উচ্চারণযুক্ত অক্ষরগুলিকে প্রতিস্থাপন করে না' যার অর্থ èäçপ্রভৃতি অক্ষরগুলি এই ফাংশনটির সাথে স্থানে থাকবে।
JHoffmann

দয়া করে নোট করুন sanitize_title_with_dashesপাশাপাশি sanitize_titleকিছু বিশেষ অক্ষর রেখে দিন যা কিছু সিস্টেমকে ভেঙে দিতে পারে। আমি আপনাকে স্ট্রিংগুলি হ্রাস করার জন্য আরও সার্বজনীন পন্থা চাইsanitize_html_class
জিডিওয়াই

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
?>

আমি স্যানিটাইজ_টাইটেল () চেষ্টা করেছিলাম তবে ফলতে এটি% c2% a0 ছেড়ে যায়।

এটা অদ্ভুত লাগছে। ইনপুট মানটি জেনে রাখা দুর্দান্ত হবে তবে নিম্নলিখিতটি wp_insert_post() sanitize_title()যথেষ্ট বলে মনে হচ্ছে।


2

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()বিশেষ অক্ষর মুছে ফেলবে না।


এই সঠিক উত্তর হওয়া উচিত
bysanchy

0

ওয়েবসাপ্টারের দুর্দান্ত উত্তরের পাশাপাশি আমি নীচেও পেয়েছি:

আপনার ব্যবহারের উপর নির্ভর করে এটি আপনার যা প্রয়োজন তা নির্ভর করবে।

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-: _

সুতরাং আপনি দেখতে পারেন যে তারা ঠিক একই। সুতরাং এগুলির মধ্যে কেবলমাত্র তফাতটি দেখা যায় যে একটি এনকোডগুলি উচ্চারণকৃত চার্টারগুলি অপরটি প্রতিস্থাপন করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.