การตั้งชื่อภาษาไทยในเวิร์ดเพรสให้ URL ยาวขึ้น
85 | | . | WordPress, การแก้ไขปัญหา, แก้โค้ด WordPress
การตั้งชื่อภาษาไทยในเวบไซต์ของเรานั้นจะมีผลดีหลายอย่าง คือ ข้อแรกผู้อ่านที่เป็นคนไทยสามารถเข้าใจได้ง่ายขึ้นกว่าภาษาอังกฤษ ข้อสองคือผู้อ่านจะสามารถเข้าใจได้ง่ายขึ้นว่าบทความที่เราจะอ่านมีเรื่องเกี่ยวกับอะไร และสุดท้ายคือผลต่อการจัดลำดับของกูเกิ้ล (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 ของเราก็จะยาวขึ้นแล้วครับ