私が取り組んでいるサイトでは、次の「かわいい」パーマリンク構造を使用しています。
http://example.com/blog/my-special-post
しかし、カスタム投稿タイプの場合、私のクライアントは「かわいい」スラッグを避けたいと思います。
http://example.com/product/142
カスタム投稿タイプのスラグの代わりに投稿IDを使用するにはどうすればよいですか。
私はこれがWP_Rewriteを使って可能であるかもしれないと信じます、しかし、私はどこから始めるべきかわかりません。
これは私が投稿IDでカスタム投稿タイプURLを書き換えるために使用するものです。 URL要求を変換するための書き換え規則と、get_post_permalink()
の呼び出しに対して正しいURLを返すためのpost_type_link
に対するフィルタが必要です。
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' );
}