thai language url

การตั้งชื่อภาษาไทยในเวิร์ดเพรสให้ 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 ของเราก็จะยาวขึ้นแล้วครับ

avatar

นายปิ๊ก


ผู้ก่อตั้งเว็บไซต์ Themevilles.com เป็นอาจารย์สอน WordPress และ WooCommerce ในเว็บคอร์สออนไลน์ Skilllane และรับทำเว็บไซต์ ทำการตลาดออนไลน์ เช่น SEO, Facebook และ LINE

สอบถามผ่านทาง Line QR Code qr-code.png