问题描述
我正在使用的网站使用以下”pretty” 永久链接结构:
http://example.com/blog/my-special-post
但是对于自定义的帖子类型,我的客户端希望避免使用”pretty” slug:
http://example.com/product/142
如何使用帖子 ID 代替自定义帖子类型的插件?
我相信这可能是使用 WP_Rewrite,但我不知道从哪里开始。
最佳解决方案
这是我用来重写具有帖子 ID 的自定义帖子类型的 URL 。您需要重写规则来翻译 URL 请求,以及 post_type_link
上的过滤器,以便为 get_post_permalink()
的任何调用返回正确的 URL:
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' );
}
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。