この記事ではWordPressで
カスタム投稿タイプのパーマリンクを「数字ベース」にする方法
をご紹介します。
デフォルト機能である「投稿」であれば、パーマリンク構造は管理画面「設定」→「パーマリンク」から簡単に設定可能です。
しかし、カスタム投稿タイプの場合、プラグインを用いるか、あるいはfunctions.phpにソースコードを記述する必要があります。

今回はfunctions.phpにソースコードを記述して、カスタム投稿タイプのパーマリンク構造を「数字ベース」に設定する方法をご紹介します!
カスタム投稿タイプのパーマリンク構造を「数字ベース」にする
カスタム投稿タイプのパーマリンク構造を「数字ベース」にする手順は非常に簡単で、たったの2ステップで完了できます。
- 管理画面「設定」→「パーマリンク」の設定がカスタム投稿タイプに反映されないようにする
- functions.phpへソースコードを追記
STEP1|管理画面「設定」→「パーマリンク」の設定が反映されないようにする
パターン① CPT UIを使用している場合
「フロントでのリライト」を「False」に変更します。


パターン② functions.phpで追加している場合
functions.phpのカスタム投稿タイプ定義箇所のオプションに下記を追記します。
'rewrite' => array('with_front' => false),
STEP2|functions.phpへソースコードを追記
次に、以下のソースコードをfunctions.phpへ追記します。
/**
* カスタム投稿タイプのスラッグを「数字ベース」にする
*/
function my_custom_post_type_link( $link, $post ){
if ( '★your-post-type-slug' === $post->post_type ) {
return home_url( 'archives/★your-post-type-slug/' . $post->ID );
}
return $link;
}
add_filter( 'post_type_link', 'my_custom_post_type_link', 1, 2 );
function my_custom_rewrite_rules_array( $rules ) {
$new_rules = array(
'archives/★your-post-type-slug/([0-9]+)/?$' => 'index.php?post_type=★your-post-type-slug&p=$matches[1]',
);
return $new_rules + $rules;
}
add_filter( 'rewrite_rules_array', 'my_custom_rewrite_rules_array' );
出力されるURL構造
https://ドメイン/カスタム投稿タイプスラッグ/archives/記事ID



たったこれだけで任意のカスタム投稿タイプのパーマリンク構造を「数字ベース」へ変更することが可能です!
補足|archivesを除去したい場合
やることは、前述のソースコードから「archives」を取り除くだけです。
/**
* カスタム投稿タイプのスラッグを「数字ベース」にする
*/
function my_custom_post_type_link( $link, $post ){
if ( '★your-post-type-slug' === $post->post_type ) {
return home_url( '/★your-post-type-slug/' . $post->ID );
}
return $link;
}
add_filter( 'post_type_link', 'my_custom_post_type_link', 1, 2 );
function my_custom_rewrite_rules_array( $rules ) {
$new_rules = array(
'★your-post-type-slug/([0-9]+)/?$' => 'index.php?post_type=★your-post-type-slug&p=$matches[1]',
);
return $new_rules + $rules;
}
add_filter( 'rewrite_rules_array', 'my_custom_rewrite_rules_array' );
出力されるURL構造
https://ドメイン/カスタム投稿タイプスラッグ/記事ID
まとめ
以上がWordPressでカスタム投稿タイプのパーマリンクを「数字ベース」にする方法でした。
使用頻度は比較的少ないかもしれませんが、実案件で使用する機会があったためこれを機に記事にまとめてみました。



この記事が少しでもお役に立ったなら何よりです!
当ブログではWordPressやPHPなどに関する情報を発信しています。ご興味のある方はほかの記事もご覧いただけるとうれしいです!
それでは、最後までご覧いただきありがとうございました。
コメント