ওয়ার্ডপ্রেস কীভাবে ইউআরএল স্লাগ তৈরি করে?


17

ওয়ার্ডপ্রেস ঠিক কীভাবে ইউআরএলগুলির জন্য স্লাগ তৈরি করে তার বিবরণ দেয় এমন কোনও পৃষ্ঠা রয়েছে? আমি একটি স্ক্রিপ্ট লিখছি যা ওয়ার্ডপ্রেস উত্পন্ন করেগুলির অনুরূপ URL স্লাগগুলি উত্পন্ন করতে হবে rate


এই প্রশ্নের উত্তরগুলি এখন পুরানো - এর পরিবর্তে কোডেক্স.ওয়ার্ডপ্রেস.আর . / ফাংশন_প্রকাশ / ডাব্লুপি_উনিক_পোস্ট_স্লাগ ব্যবহার করুন।
SinisterBeard

উত্তর:


16

ব্যাট বন্ধ, ডাব্লুপি স্লাগগুলি কীভাবে উত্পন্ন হয় সে সম্পর্কে আমি একটি পৃষ্ঠা / টিউটোরিয়াল / ডকুমেন্টেশন দিতে পারি না, তবে sanitize_title()ফাংশনটি একবার দেখুন ।

ফাংশন নাম দ্বারা একটি ভুল ধারণা পেতে না, এটি পৃষ্ঠা / পোস্ট শিরোনাম হিসাবে আরও ব্যবহারের জন্য একটি শিরোনাম স্যানিটাইজ করার উদ্দেশ্যে নয় । এটি একটি শিরোনামের স্ট্রিং নেয় এবং এটি কোনও ইউআরএল-এ ব্যবহৃত হতে ফেরত দেয়:

  • স্ট্রিপস এইচটিএমএল এবং পিএইচপি
  • রেখাচিত্রমালা বিশেষ অক্ষর
  • সমস্ত অক্ষরকে লোয়ারক্যাপগুলিতে রূপান্তর করে
  • হাইফেন / ড্যাশ দ্বারা সাদা স্থান, আন্ডারস্কোর এবং পিরিয়ডগুলি প্রতিস্থাপন করে
  • একাধিক টানা ড্যাশ হ্রাস করে

সেখানে পারে প্রান্ত ক্ষেত্রে যেখানে কোর না কিছু অতিরিক্ত (আপনি উৎস তাকান তা যাচাই করতে চাই হতে sanitize_title()হবে সবসময় উৎপাদিত মধ্যে চলা ঠিক একই আশা) ক্ষেত্রে, কিন্তু এই অন্তত 99% আবরণ, যদি সব উচিত নয়, ।


1
@ কাইজার: আমি বুঝতে পেরেছিলাম যে আপনি কেবল টি 5 পুনর্লিখনের সাথে প্রেম করছেন :) (এটি যাচাই করার জন্য আমার এজেন্ডায় রয়েছে) | এবং সাধারণত: শিরোনামটি যদি সত্যিই দীর্ঘ হয় তবে ডাব্লুপিও স্লাগগুলি একটি নির্দিষ্ট সর্বোচ্চ দৈর্ঘ্যে ছাঁটাই করে। এটি সেই ক্ষেত্রে একটি যেখানে আমি পুরোপুরি নিশ্চিত নই যে এটি sanitize_titleফাংশনটিতে প্রয়োগ করা ফিল্টার দ্বারা সম্পন্ন হয়েছে কিনা, বা এটি ফাংশনটি চালুর পরে অন্য কোনও কিছু দ্বারা পরিচালিত হয়েছে কিনা।
জোহানেস পিল

আমার ধারণা এটি sanitize_titleফিল্টার যা একজনের চেক আউট করা উচিত। তবে অন্যান্য সম্পর্কিত কাজগুলিও রয়েছে । আমি সত্যিই এই সম্পর্কে কোন ধারণা পেয়েছি। কখনও কখনও মনে SimplePieহয় এটি WP_Rewriteজিনিস চেয়ে বোঝা সহজ । বিটিডব্লিউ: টসচো তার প্লাগইনে "মনকিম্যান রাইরাইট অ্যানালাইজার" -সংশ্লিষ্টতা সংহত করার জন্য কাজ করে। সেখানেই জিনিসগুলি সত্যিই আকর্ষণীয় হয়ে উঠতে শুরু করে।
কায়সার

1
আপনি যদি ইউআরএল-বন্ধুত্বপূর্ণ স্লাগ তৈরির বিষয়ে আরও কিছুটা স্পষ্ট হতে চান তবে স্যানিটাইজ_উইট_ড্যাশ_ড্যাশগুলি ()ও বিবেচনা করুন ।
টম অ্যাগার

5

আপনি এই ফাংশনটি ব্যবহার করতে পারেন:

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;
}

ডাব্লুপি ইউআরএল স্যানিটাইজ ফাংশনটি ঠিক কীভাবে কাজ করে।


4

আপনার পরিষেবাতে কোর

ওয়ার্ডপ্রেস থেকে আলাদা করে কোনও বিকাশকারী মোডWP_DEBUG নেই, যা আপনাকে এই ক্ষেত্রে খুব বেশি সহায়তা করে না। মূলত ডব্লিউপি "রিরাইট এপিআই" ব্যবহার করে যা WP_Rewriteক্লাসের জন্য একটি ফাংশন ভিত্তিক, নিম্ন স্তরের মোড়ক , যা আপনি কোডেক্সে পড়তে পারেনglobal $wp_rewriteঅবজেক্ট আপনার সেবা এ দাঁড়িয়েছে বর্গ সঙ্গে এটি বা ইন্টারঅ্যাক্ট পরিদর্শন করা।

এটি দেখার জন্য যে প্লাগইনগুলি সহায়তা করে।

Toschos "T5 পুনর্লিখন" -প্লাগিন এবং জান ফ্যাব্রিজ "Monkeyman পুনর্লিখন বিশ্লেষক" - প্লাগইন আপনাকে আপনার পথ দেখায় । এটিকে "Monkeyman পুনর্লিখন বিশ্লেষক" এর সাথে সহজেই সংহত করার জন্য আমি "T5 পুনর্লিখন" এর জন্য একটি ছোট এক্সটেনশন লিখেছি, যা আপনি এখানে গিটহাবের "T5 পুনর্লিখন" রেপো উইকিতে পাবেন ।

"মনকিম্যান" - প্লাগইন একটি নতুন পৃষ্ঠা যুক্ত করে, যা সরঞ্জামগুলির অধীনে প্রশাসনিক ইউআই মেনুতে দায়ের করা হয় । "T5 ও লেখা" -plugin করার জন্য একটি নতুন সহায়তা ট্যাব যোগ করা সেটিংস > পার্মালিনক্স পাতা। আমার এক্সটেনশানটি উল্লিখিত সরঞ্জাম- পৃষ্ঠায় সহায়তা ট্যাবগুলি যুক্ত করে ।

"T5 পুনর্লিখন" - প্লাগইনগুলি ট্যাব সামগ্রীর মতো দেখতে সহায়তা করে তার স্ক্রিনশট এখানে।

এখানে চিত্র বর্ণনা লিখুন

ঘূর্ণন = প্যাটার্ন | বেসচ্রেইবাং = ব্যাখ্যা | বিসপিল = উদাহরণ

মন্তব্য

"টি 5 পুনর্লিখন" -প্লাগিন আপনাকে পুনরায় লেখার বস্তুটি পরীক্ষা করতে সহায়তা করার সাথে একটি দুর্দান্ত কাজ করে। এবং এটি আরও বেশি করে: এটি নতুন সম্ভাবনার যোগ করে। সুতরাং এটি (আমার ইনস্টলেশনগুলিতে অন্তত) আমার বেসিক প্লাগইন প্যাকেজের অংশ।


2

আসলে, আপনি যদি মূল ফাংশনটি 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( 

0

একটি পুরাতন প্রশ্ন পুনরায় শুরু করার জন্য ক্ষমা করুন, তবে আমার যেমন একই প্রয়োজনীয়তা পেয়েছিলেন তা জানতে পেরেছিলাম যে এই পদ্ধতিটি আমার পক্ষে নিখুঁতভাবে কাজ করে:

$some_string = "DON'T STOP ME NOW!";
$slug = sanitize_title(sanitize_title($some_string, '', 'save'), '', 'query');
echo $slug; // dont-stop-me-now

এই পদ্ধতিতে ডাবল স্যানিটাইজেশন ব্যবহার করা হয়।

প্রথমটি saveমোডটি ব্যবহার করে , যেখানে এইচটিএমএল এবং পিএইচপি ট্যাগগুলি ছিনিয়ে নেওয়া হয় এবং অ্যাকসেন্টগুলি সরানো হয় (উচ্চারণযুক্ত অক্ষরগুলি অ-উচ্চারণযুক্ত সমতুল্যে প্রতিস্থাপন করা হয়)।

দ্বিতীয় queryমোডটি নিশ্চিত করে যে সমস্ত স্পেস ড্যাশ -এবং অন্যান্য বিরামচিহ্নগুলি সরানো হয়েছে।

আশা করি এটি কাউকে সাহায্য করবে! :)

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