カスタム投稿タイプのURLを/idにすると、固定ページが表示されなくなったときの回避方法。

/idにできた!と思ったのも束の間…

こちらの記事( https://hacknote.jp/archives/13340/ )を参考に、カスタム投稿タイプのパーマリンクを『ドメイン名/id/』にすることに成功した!…と思ったら、なんと固定ページを表示しようとするとなぜか『front-page.php』が使われるじゃありませんか。なんてこったい…

やりたいこと

カスタム投稿タイプのURL:
『ドメイン名/id/』

固定ページ:
テンプレート階層通りのテンプレートファイルが使われるようにする。

解決方法

※追記
page-$slug.phpは動きますが、page.phpはダメでした。。。誰か助けて。

functions.phpに以下のように記述しました。
参考サイトとはかけ離れましたが…なんとかなった…よかった…。


add_filter('post_type_link', 'book_post_type_link', 1, 2);
function book_post_type_link($link, $post)
{
    if ('book' === $post->post_type) {
        return home_url('/' . $post->ID . '/');
    } else {
        return $link;
    }
}

add_filter('rewrite_rules_array', 'book_rewrite_rules_array');
function book_rewrite_rules_array($rules)
{
    $new_rules = array(
        '(\d*)$' => 'index.php?post_type=book&p=$matches[1]',
    );

    return $new_rules + $rules;
}

カスタム投稿タイプのslugを『book』と仮定して書いています。
置き換えて活用してください。