カスタム投稿のパーマリンク変更

WordPress
スポンサーリンク

カスタム投稿のデフォルトのパーマリンクは、投稿タイトルです。

ワードプレスの管理画面から変えられるパーマリンクは投稿タイプだけです。

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;
}

タイトルとURLをコピーしました