การตั้งชื่อภาษาไทยในเวิร์ดเพรสให้ URL ยาวขึ้น

การตั้งชื่อภาษาไทยในเวบไซต์ของเรานั้นจะมีผลดีหลายอย่าง คือ ข้อแรกผู้อ่านที่เป็นคนไทยสามารถเข้าใจได้ง่ายขึ้นกว่าภาษาอังกฤษ ข้อสองคือผู้อ่านจะสามารถเข้าใจได้ง่ายขึ้นว่าบทความที่เราจะอ่านมีเรื่องเกี่ยวกับอะไร และสุดท้ายคือผลต่อการจัดลำดับของกูเกิ้ล (Google) แต่ในเวิร์ดเพรส (WordPress) มักจะมีปัญหาคือชื่อที่เราตั้งไว้อย่างสวยงามนั้น เมื่อแสดงผลจะโดนตัดคำออกไปทำให้เราอ่านหัวข้อที่เราตั้งไว้ไม่รู้เรื่อง เราจึงจะต้องแก้ไขให้หัวข้อของเรายาวขึ้นเพื่อให้ผู้อ่านเข้าใจและเกิดผลดีกับการจัดลำดับดังกล่าว
เราสามารถตั้งชื่อภาษาไทยให้ยาวได้โดยการแก้ไขฟังก์ชั่นที่มีชื่อว่า sanitize_title_with_dashes() ที่อยู่ในไฟล์ formatting.php ในโฟลเดอร์ wp-includes โดยให้ทำการปรับเปลี่ยนจำนวนคำให้เพิ่มมากขึ้น แล้วทำการฮุคฟังก์ชั่น sanitize_title เพียงเท่านี้ก็เสร็จเรียบร้อยแล้วครับ ทั้งนี้เราไม่จำเป็นที่จะเข้าไปทำการแก้ไขในไฟล์ formatting.php โดยตรง แต่เราสามารถสร้างฟังก์ชั่นอีกตัวทับฟังก์ชั่นเดิมได้แล้วใส่ไว้ใน functions.php
เริ่มต้น ให้เราทำการเปิดไฟล์ functions.php ในธีมลูก (Child Theme) หากเราไม่ใช้ธีมลูกโดยแก้ไขไฟล์ในธีมหลัก (Parent Theme) ก็สามารถทำได้แต่เมื่อมีการอัพเดทธีม ฟังก์ชั่นในส่วนนี้อาจจะหายไปได้
(อ่านต่อเรื่องธีมลูก Child Theme)

เมื่อเปิดแล้วให้ทำการใส่เนื้อหาข้อมูลดังนี้ครับ

add_filter( 'sanitize_title', 'themevilles_sanitize_title_with_dashes', 10, 3 );
function themevilles_sanitize_title_with_dashes( $title, $raw_title = '', $context = 'display' ) {

	$title = strip_tags($title);
	// Preserve escaped octets.
	$title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title);
	// Remove percent signs that are not part of an octet.
	$title = str_replace('%', '', $title);
	// Restore octets.
	$title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title);

	if (seems_utf8($title)) {
		if (function_exists('mb_strtolower')) {
			$title = mb_strtolower($title, 'UTF-8');
		}
		$title = utf8_uri_encode($title, 1000);
	}

	$title = strtolower($title);

	if ( 'save' == $context ) {
		// Convert nbsp, ndash and mdash to hyphens
		$title = str_replace( array( '%c2%a0', '%e2%80%93', '%e2%80%94' ), '-', $title );
		// Convert nbsp, ndash and mdash HTML entities to hyphens
		$title = str_replace( array( ' ', ' ', '–', '–', '—', '—' ), '-', $title );

		// Strip these characters entirely
		$title = str_replace( array(
			// iexcl and iquest
			'%c2%a1', '%c2%bf',
			// angle quotes
			'%c2%ab', '%c2%bb', '%e2%80%b9', '%e2%80%ba',
			// curly quotes
			'%e2%80%98', '%e2%80%99', '%e2%80%9c', '%e2%80%9d',
			'%e2%80%9a', '%e2%80%9b', '%e2%80%9e', '%e2%80%9f',
			// copy, reg, deg, hellip and trade
			'%c2%a9', '%c2%ae', '%c2%b0', '%e2%80%a6', '%e2%84%a2',
			// acute accents
			'%c2%b4', '%cb%8a', '%cc%81', '%cd%81',
			// grave accent, macron, caron
			'%cc%80', '%cc%84', '%cc%8c',
		), '', $title );

		// Convert times to x
		$title = str_replace( '%c3%97', 'x', $title );
	}

	$title = preg_replace('/&.+?;/', '', $title); // kill entities
	$title = str_replace('.', '-', $title);

	$title = preg_replace('/[^%a-z0-9 _-]/', '', $title);
	$title = preg_replace('/\s+/', '-', $title);
	$title = preg_replace('|-+|', '-', $title);
	$title = trim($title, '-');

	return $title;
}

ฟังก์ชั่นนี้จะเป็นเนื้อหาของฟังกขั่น sanitize_title_with_dashes() ทั้งหมด ให้เราเปลี่ยนบรรทัดที่ 16 จาก 200 เป็น 1000 เพียงเท่านี้ URL ของเราก็จะยาวขึ้นแล้วครับ