Làm thế nào để viết lại URI của loại bài tùy chỉnh?


16

Trang web mà tôi đang làm việc sử dụng cấu trúc permalink "đẹp" sau:

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

Nhưng đối với loại bài đăng tùy chỉnh, khách hàng của tôi muốn tránh có một con sên "đẹp":

http://example.com/product/142

Làm thế nào ID bài có thể được sử dụng thay cho sên cho loại bài tùy chỉnh?

Tôi tin rằng điều này có thể khả thi khi sử dụng WP_Rewrite, nhưng tôi không biết bắt đầu từ đâu.

Câu trả lời:


33

Đây là những gì tôi sử dụng để viết lại URL loại bài đăng tùy chỉnh với ID bài đăng. Bạn cần một quy tắc viết lại để dịch các yêu cầu URL, cũng như bộ lọc post_type_linkđể trả về các URL chính xác cho bất kỳ cuộc gọi nào 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' );
}

Xin chào @milo điều này hoạt động hoàn hảo với tôi ... nhưng tôi muốn một số thay đổi xin vui lòng hướng dẫn cho tôi
deemi-D-nadeem 13/03/2015
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.