![](https://bouquet344olive.com/wp-content/themes/cocoon-master/images/man.png)
カスタム投稿のデフォルトのパーマリンクは、投稿タイトルです。
ワードプレスの管理画面から変えられるパーマリンクは投稿タイプだけです。
seo的には、意味がわかりやすい単語が一番よいとされています。
ただ日本語だと文字化けしたり、都度英単語にするのが大変だったりして、
数字ベースの管理を希望されることもあります。
あとセキュリティ的に、プラグインを使いたくないという希望も。
そんないろいろな理由で、必要となり今回調べてみました。
カスタム投稿パーマリンクを、投稿ID(数字ベース)にする方法
カスタム投稿、arcnive-blog.phpのurlを投稿ID(数字ベース)にカスタマイズした例です。
blog/([0-9]+)/?$ この部分で、blog/13みたいな表示ができます。
なので、blogの部分だけ、カスタム投稿名などに変更してつかってください。
/*カスタム投稿のパーマリンクをpostIDに*/
add_filter( 'post_type_link', 'my_post_type_link', 1, 2 );
function my_post_type_link( $link, $post ){
if ( 'blog' === $post->post_type ) {
return home_url( '/blog/' . $post->ID );
} else {
return $link;
}
}
add_filter( 'rewrite_rules_array', 'my_rewrite_rules_array' );
function my_rewrite_rules_array( $rules ) {
$new_rules = array(
'blog/([0-9]+)/?$' => 'index.php?post_type=blog&p=$matches[1]',
);
return $new_rules + $rules;
}
カスタム投稿、arcnive-service.phpのurlを投稿ID(数字ベース)にカスタマイズした例です。
ひとつめと分けるため、下記にコードを変えています。
my_post_type_link2
my_rewrite_rules_array2
/*カスタム投稿のパーマリンクをpostIDに 2つ目*/
add_filter( 'post_type_link', 'my_post_type_link2', 1, 2 );
function my_post_type_link2( $link, $post ){
if ( 'service' === $post->post_type ) {
return home_url( '/service/' . $post->ID );
} else {
return $link;
}
}
add_filter( 'rewrite_rules_array', 'my_rewrite_rules_array2' );
function my_rewrite_rules_array2( $rules ) {
$new_rules = array(
'service/([0-9]+)/?$' => 'index.php?post_type=service&p=$matches[1]',
);
return $new_rules + $rules;
}