Remove custom post type slug

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

โดยปกติแล้ว เมื่อเราทำการสร้างธีมของเราขึ้นมาและต้องการสร้าง 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 ด้วย หากเราใส่ฟังก์ชั่นใดฟังก์ชั่นหนึ่งเพียงตัวเดียว ลิงก์ของเราก็จะไม่สามารถเปลี่ยนได้

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

avatar

นายปิ๊ก


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

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