カスタム投稿を使ったサイトで投稿のパーマリンク設定とカスタム投稿のパーマリンク設定を分けたい時があると思います。
カスタム投稿はslugが指定してあるけど、投稿には記事のタイトルがそのまま入ってるからパーマリンク設定で機械的に書き換えたい、というようなケースです。
そんな時に、投稿はpost-%postid%というようなパーマリンク設定にして、カスタム投稿タイプは%postname%にしたとします。
そうするとカスタム投稿タイプのパーマリンクのパーマリンクに含まれるpost_typeの部分にも影響して書き換わってしまいます。
そんなことから、カスタム投稿タイプと投稿のパーマリンクを別々に設定する方法をご紹介します。
投稿はpost-%postid%に、カスタム投稿は%postname%にしたい
custom-post-type-permalinksプラグインは使えるか?
custom-post-type-permalinksプラグインは、今回の用途では使えませんでした。
カスタム投稿の個別ページのパーマリンクを変更できますが、投稿タイプ名が全体のパーマリンク設定の影響を受けてしまいます。
例えば、投稿はpost-%postid%というようなパーマリンク設定にして、カスタム投稿タイプは%postname%にしたとします。
そうすると、カスタム投稿のパーマリンクが以下のようになってしまいます。
/post-カスタム投稿名/%postname%/
というようにカスタム投稿名になぜか”post-“が追加されてしまうのです。この部分はいじれないのでこのプラグインの問題ではないのですが、結果的にいじれないのでこのプラグインは無力です。

フックでカスタマイズすれば実現可能
パーマリンク設定は、投稿名(%postname%)にします。
投稿は、投稿名にしたくないのでカスタマイズします。
post_linkフィルターは、投稿(post)のみに影響します。

もしカスタム投稿側を変更したい場合は、post_type_linkフィルターを使用します。

<?php
/* 投稿のパーマリンク設定
-----------------------------------------------------*/
//カスタム投稿タイプのパーマリンクを投稿IDに変更する。
add_filter('post_link', 'generateCustomPostLink', 1, 2);
add_filter('rewrite_rules_array', 'addRewriteRules');
function generateCustomPostLink($link, $post){
//投稿IDに書き換えたパーマリンク文字列を返す
return home_url('/post-'.$post->ID);
}
//投稿IDに書き換えたパーマリンクに対応したクエリルールを追加
function addRewriteRules($rules){
$new_rule = array(
'post-([0-9]+)/?$' => 'index.php?post_type=post&p=$matches[1]'
);
//ルール配列に結合
return $new_rule + $rules;
}
参考:https://www.webdesignleaves.com/pr/wp/wp_permalink_rewrite.html
参考:https://libre-co.com/wordpress/custom_taxonomy_permalink/
まとめ
パーマリンク設定は、カスタマイズすると500エラーなどの原因や404になったりますので、自己責任で行いましょう。