我正在工作的网站使用以下“漂亮的”永久链接结构:
http://example.com/blog/my-special-post
但是对于自定义帖子类型,我的客户希望避免出现“漂亮”的提示:
http://example.com/product/142
如何使用帖子ID代替自定义帖子类型的标签?
我相信使用WP_Rewrite可能会实现,但是我不知道从哪里开始。
我正在工作的网站使用以下“漂亮的”永久链接结构:
http://example.com/blog/my-special-post
但是对于自定义帖子类型,我的客户希望避免出现“漂亮”的提示:
http://example.com/product/142
如何使用帖子ID代替自定义帖子类型的标签?
我相信使用WP_Rewrite可能会实现,但是我不知道从哪里开始。
Answers:
这就是我用来用帖子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' );
}