ওয়ার্ডপ্রেস ঠিক কীভাবে ইউআরএলগুলির জন্য স্লাগ তৈরি করে তার বিবরণ দেয় এমন কোনও পৃষ্ঠা রয়েছে? আমি একটি স্ক্রিপ্ট লিখছি যা ওয়ার্ডপ্রেস উত্পন্ন করেগুলির অনুরূপ URL স্লাগগুলি উত্পন্ন করতে হবে rate
ওয়ার্ডপ্রেস ঠিক কীভাবে ইউআরএলগুলির জন্য স্লাগ তৈরি করে তার বিবরণ দেয় এমন কোনও পৃষ্ঠা রয়েছে? আমি একটি স্ক্রিপ্ট লিখছি যা ওয়ার্ডপ্রেস উত্পন্ন করেগুলির অনুরূপ URL স্লাগগুলি উত্পন্ন করতে হবে rate
উত্তর:
ব্যাট বন্ধ, ডাব্লুপি স্লাগগুলি কীভাবে উত্পন্ন হয় সে সম্পর্কে আমি একটি পৃষ্ঠা / টিউটোরিয়াল / ডকুমেন্টেশন দিতে পারি না, তবে sanitize_title()
ফাংশনটি একবার দেখুন ।
ফাংশন নাম দ্বারা একটি ভুল ধারণা পেতে না, এটি পৃষ্ঠা / পোস্ট শিরোনাম হিসাবে আরও ব্যবহারের জন্য একটি শিরোনাম স্যানিটাইজ করার উদ্দেশ্যে নয় । এটি একটি শিরোনামের স্ট্রিং নেয় এবং এটি কোনও ইউআরএল-এ ব্যবহৃত হতে ফেরত দেয়:
সেখানে পারে প্রান্ত ক্ষেত্রে যেখানে কোর না কিছু অতিরিক্ত (আপনি উৎস তাকান তা যাচাই করতে চাই হতে sanitize_title()
হবে সবসময় উৎপাদিত মধ্যে চলা ঠিক একই আশা) ক্ষেত্রে, কিন্তু এই অন্তত 99% আবরণ, যদি সব উচিত নয়, ।
sanitize_title
ফাংশনটিতে প্রয়োগ করা ফিল্টার দ্বারা সম্পন্ন হয়েছে কিনা, বা এটি ফাংশনটি চালুর পরে অন্য কোনও কিছু দ্বারা পরিচালিত হয়েছে কিনা।
sanitize_title
ফিল্টার যা একজনের চেক আউট করা উচিত। তবে অন্যান্য সম্পর্কিত কাজগুলিও রয়েছে । আমি সত্যিই এই সম্পর্কে কোন ধারণা পেয়েছি। কখনও কখনও মনে SimplePie
হয় এটি WP_Rewrite
জিনিস চেয়ে বোঝা সহজ । বিটিডব্লিউ: টসচো তার প্লাগইনে "মনকিম্যান রাইরাইট অ্যানালাইজার" -সংশ্লিষ্টতা সংহত করার জন্য কাজ করে। সেখানেই জিনিসগুলি সত্যিই আকর্ষণীয় হয়ে উঠতে শুরু করে।
আপনি এই ফাংশনটি ব্যবহার করতে পারেন:
static public function slugify($text)
{
// replace non letter or digits by -
$text = preg_replace('~[^\pL\d]+~u', '-', $text);
// transliterate
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
// remove unwanted characters
$text = preg_replace('~[^-\w]+~', '', $text);
// trim
$text = trim($text, '-');
// remove duplicate -
$text = preg_replace('~-+~', '-', $text);
// lowercase
$text = strtolower($text);
if (empty($text)) {
return 'n-a';
}
return $text;
}
ডাব্লুপি ইউআরএল স্যানিটাইজ ফাংশনটি ঠিক কীভাবে কাজ করে।
ওয়ার্ডপ্রেস থেকে আলাদা করে কোনও বিকাশকারী মোডWP_DEBUG
নেই, যা আপনাকে এই ক্ষেত্রে খুব বেশি সহায়তা করে না। মূলত ডব্লিউপি "রিরাইট এপিআই" ব্যবহার করে যা WP_Rewrite
ক্লাসের জন্য একটি ফাংশন ভিত্তিক, নিম্ন স্তরের মোড়ক , যা আপনি কোডেক্সে পড়তে পারেন । global $wp_rewrite
অবজেক্ট আপনার সেবা এ দাঁড়িয়েছে বর্গ সঙ্গে এটি বা ইন্টারঅ্যাক্ট পরিদর্শন করা।
Toschos "T5 পুনর্লিখন" -প্লাগিন এবং জান ফ্যাব্রিজ "Monkeyman পুনর্লিখন বিশ্লেষক" - প্লাগইন আপনাকে আপনার পথ দেখায় । এটিকে "Monkeyman পুনর্লিখন বিশ্লেষক" এর সাথে সহজেই সংহত করার জন্য আমি "T5 পুনর্লিখন" এর জন্য একটি ছোট এক্সটেনশন লিখেছি, যা আপনি এখানে গিটহাবের "T5 পুনর্লিখন" রেপো উইকিতে পাবেন ।
"মনকিম্যান" - প্লাগইন একটি নতুন পৃষ্ঠা যুক্ত করে, যা সরঞ্জামগুলির অধীনে প্রশাসনিক ইউআই মেনুতে দায়ের করা হয় । "T5 ও লেখা" -plugin করার জন্য একটি নতুন সহায়তা ট্যাব যোগ করা সেটিংস > পার্মালিনক্স পাতা। আমার এক্সটেনশানটি উল্লিখিত সরঞ্জাম- পৃষ্ঠায় সহায়তা ট্যাবগুলি যুক্ত করে ।
"T5 পুনর্লিখন" - প্লাগইনগুলি ট্যাব সামগ্রীর মতো দেখতে সহায়তা করে তার স্ক্রিনশট এখানে।
ঘূর্ণন = প্যাটার্ন | বেসচ্রেইবাং = ব্যাখ্যা | বিসপিল = উদাহরণ
"টি 5 পুনর্লিখন" -প্লাগিন আপনাকে পুনরায় লেখার বস্তুটি পরীক্ষা করতে সহায়তা করার সাথে একটি দুর্দান্ত কাজ করে। এবং এটি আরও বেশি করে: এটি নতুন সম্ভাবনার যোগ করে। সুতরাং এটি (আমার ইনস্টলেশনগুলিতে অন্তত) আমার বেসিক প্লাগইন প্যাকেজের অংশ।
আসলে, আপনি যদি মূল ফাংশনটি wp_insert_post (post.php) দেখেন, আপনি দেখতে পাবেন যে এটি নিম্নলিখিতগুলি করে:
$data['post_name'] = wp_unique_post_slug( sanitize_title( $data['post_title'], $post_ID ), $post_ID, $data['post_status'], $post_type, $post_parent );
$wpdb->update( $wpdb->posts, array( 'post_name' => $data['post_name'] ), $where );
মুখ্য বিষয়টি হ'ল ডাব্লুপি_উইনিক_পোস্ট_স্লাগ এবং স্যানিটাইজ_ টাইটেল উভয়ই ব্যবহার করে:
wp_unique_post_slug( sanitize_title(
একটি পুরাতন প্রশ্ন পুনরায় শুরু করার জন্য ক্ষমা করুন, তবে আমার যেমন একই প্রয়োজনীয়তা পেয়েছিলেন তা জানতে পেরেছিলাম যে এই পদ্ধতিটি আমার পক্ষে নিখুঁতভাবে কাজ করে:
$some_string = "DON'T STOP ME NOW!";
$slug = sanitize_title(sanitize_title($some_string, '', 'save'), '', 'query');
echo $slug; // dont-stop-me-now
এই পদ্ধতিতে ডাবল স্যানিটাইজেশন ব্যবহার করা হয়।
প্রথমটি save
মোডটি ব্যবহার করে , যেখানে এইচটিএমএল এবং পিএইচপি ট্যাগগুলি ছিনিয়ে নেওয়া হয় এবং অ্যাকসেন্টগুলি সরানো হয় (উচ্চারণযুক্ত অক্ষরগুলি অ-উচ্চারণযুক্ত সমতুল্যে প্রতিস্থাপন করা হয়)।
দ্বিতীয় query
মোডটি নিশ্চিত করে যে সমস্ত স্পেস ড্যাশ -
এবং অন্যান্য বিরামচিহ্নগুলি সরানো হয়েছে।
আশা করি এটি কাউকে সাহায্য করবে! :)