如何重写自定义帖子类型的URI?


16

我正在工作的网站使用以下“漂亮的”永久链接结构:

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

但是对于自定义帖子类型,我的客户希望避免出现“漂亮”的提示:

http://example.com/product/142

如何使用帖子ID代替自定义帖子类型的标签?

我相信使用WP_Rewrite可能会实现,但是我不知道从哪里开始。

Answers:


33

这就是我用来用帖子ID重写自定义帖子类型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-纳迪姆
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.