🌙

การนำ Custom Post Type Slug ออกจาก WordPress Permalink

พฤศจิกายน 5, 2017 · Worapong Nijjarunkul

โดยปกติแล้ว เมื่อเราทำการสร้างธีมของเราขึ้นมาและต้องการสร้าง Custom Post Type เพื่อใช้งานอย่างใดอย่างหนึ่งขึ้นเช่น เราสร้าง Custom Post Type ชื่อ book เพื่อทำการเก็บข้อมูลเกี่ยวกับหนังสือทั้งหมด ระบบของ WordPress จะทำการสร้างลิงก์ของเราให้เป็นลักษณะดังนี้ www.xxx.com/book/postname โดยลิงก์หรือเพอร์มาลิงก์นี้จะมีคำว่า book คั่นกลางอยู่ เพราะว่าระบบของ WordPress นั้นต้องการป้องกันความสับสนกันระหว่างลิงก์ชของ Custom Post Type และ Post/Page

วิธีการนำ Custom Post Type Slug ออกจาก Permalink

ในบางกรณีเราต้องการ Permalink ที่สั้นและกระชับ เพื่อให้ผู้อ่านสามารถจดจำได้ง่ายเป็นต้น โดยต้องการตัดคำว่า book ออกจากเพอร์มาลิงก์ของเรา ให้เหลือเพียง www.xxx.com/postname อย่างนี้ เราจะทำการแก้ไขโดยทำการเขียนฟังก์ชั่น 2 ฟังก์ชั่นดังต่อไปนี้ลงไปในไฟล์ functions.php

function themename_remove_slug( $post_link, $post, $leavename ) {
if ( 'book' != $post->post_type || 'publish' != $post->post_status ) {
return $post_link;
}
$post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link );
return $post_link;
}
add_filter( 'post_type_link', 'themename_remove_slug', 10, 3 );
function themename_parse_request( $query ) {
if ( ! $query->is_main_query() || 2 != count( $query->query ) || ! isset( $query->query['page'] ) ) {
return;
}
if ( ! empty( $query->query['name'] ) ) {
$query->set( 'post_type', array( 'post', 'book', 'page' ) );
}
}
add_action( 'pre_get_posts', 'themename_parse_request' );

ฟังก์ชั่นแรก themename_remove_slug จะเป็นฟังก์ชั่นที่ใช้วิธีการแทนที่โดยทำการแก้ Slug ของเราในที่นี้คือ book ให้เหลือเพียงแค่ Slash ( / )  เท่านั้น ในขณะที่ฟังก์ชั่น themename_parse_request ตัวที่สองนั้น จะทำการตั้งค่า Book ของเรานั้นอยู่ในกลุ่ม Post Type เพื่อให้ WordPress รู้จักว่ามี Post Type นี้ใช้งานใน main query ด้วย หากเราใส่ฟังก์ชั่นใดฟังก์ชั่นหนึ่งเพียงตัวเดียว ลิงก์ของเราก็จะไม่สามารถเปลี่ยนได้

หากใครสนใจก็ลองใช้ดูก็ได้นะครับ

Worapong Nijjarunkul

เจ้าของเว็บไซต์ Themevilles.com เป็นผู้เชี่ยวชาญ WordPress ที่มีประสบการณ์มากกว่า 10 ปี และเป็นผู้สอนคอร์ส WordPress บน SkillLane ผู้เรียนไว้วางใจนับพันคนด้วยความเชี่ยวชาญด้านการสร้างและแก้ปัญหาเว็บไซต์ WordPress ทั้งการออกแบบ พัฒนา ปรับความเร็ว ตลอดจนการทำ SEO — ทำให้ Themevilles.com เป็นแหล่งความรู้และบริการด้าน WordPress ที่มืออาชีพและเจ้าของธุรกิจให้ความไว้วางใจมายาวนาน หากคุณต้องการเว็บไซต์ที่สวย เร็ว ปลอดภัย และรองรับ SEO อย่างถูกต้อง ที่นี่คือคำตอบสำหรับคุณ