วิธีเขียน URI ของประเภทโพสต์ที่กำหนดเองได้อย่างไร


16

ไซต์ที่ฉันใช้งานใช้โครงสร้าง Permalink "สวย" ต่อไปนี้:

http://example.com/blog/my-special-post

แต่สำหรับประเภทโพสต์ที่กำหนดเองลูกค้าของฉันต้องการหลีกเลี่ยงการบุ้ง "สวย":

http://example.com/product/142

รหัสโพสต์สามารถนำมาใช้แทนกระสุนสำหรับประเภทโพสต์ที่กำหนดเองได้อย่างไร

ฉันเชื่อว่านี่อาจเป็นไปได้โดยใช้ WP_Rewrite แต่ฉันไม่รู้ว่าจะเริ่มต้นอย่างไร

คำตอบ:


33

นี่คือสิ่งที่ฉันใช้เพื่อเขียน URL ประเภทโพสต์ที่กำหนดเองใหม่ด้วยรหัสโพสต์ คุณต้องมีกฎการเขียนซ้ำเพื่อแปลคำขอ URL รวมทั้งตัวกรองpost_type_linkเพื่อส่งคืน URL ที่ถูกต้องสำหรับการโทรไปยังget_post_permalink():

add_filter('post_type_link', 'wpse33551_post_type_link', 1, 3);

function wpse33551_post_type_link( $link, $post = 0 ){
    if ( $post->post_type == 'product' ){
        return home_url( 'product/' . $post->ID );
    } else {
        return $link;
    }
}

add_action( 'init', 'wpse33551_rewrites_init' );

function wpse33551_rewrites_init(){
    add_rewrite_rule(
        'product/([0-9]+)?$',
        'index.php?post_type=product&p=$matches[1]',
        'top' );
}

สวัสดี @milo สิ่งนี้ทำงานได้อย่างสมบูรณ์แบบ ... แต่ฉันต้องการการเปลี่ยนแปลงบางอย่างโปรดช่วยแนะนำฉันด้วย
deemi-D-nadeem
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.