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

时间:2011-11-12 作者:Lea Hayes

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

http://example.com/blog/my-special-post
但对于自定义帖子类型,我的客户希望避免出现“漂亮”的slug:

http://example.com/product/142
如何使用post ID代替定制post类型的slug?

我相信使用WP\\u Rewrite可以做到这一点,但我不知道从哪里开始。

1 个回复
最合适的回答,由SO网友:Milo 整理而成

这就是我用来用帖子ID重写自定义帖子类型URL的方法。您需要一个重写规则来转换URL请求,以及post_type_link 为任何调用返回正确的URLget_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\' );
}

结束

相关推荐

Custom permalinks

我们有一个自定义类型music./music/ /music/post-name/ 此外,我们还有一个类似标签的分类法genres. 其URL为:/music-genres/genre-name/ 我尝试创建如下URL:/music/ /music/post-name/ /music/genres/ /music/genres/genre-name/ /music-genres/ 应替换为/music/genres/.最后,我们应该得到如下url