前回投稿ページのURLをサイトのディレクトリ構造に合わせて最適化したけどカスタム投稿ではどうなるのかニャ。。
前回の投稿でデフォルトの投稿に関してはうまくサイトのディレクトリ構造に最適化されたURLを作ることができました。ただカスタム投稿タイプがここに加わった場合どうなるでしょうか。
カスタム投稿のスラッグが「blog」、カスタム投稿のタクソノミーが「blog_cate」だった場合以下のようになっていると思います。
※このサイトではカスタム投稿は使用していませんので以下のURLはあくまで例です。
・カスタム投稿の一覧ページのURL(例)
https://daian-kichijitsu.com/blog/
・カスタム投稿のカテゴリ―ページ(例:カテゴリーのスラッグが「info」の場合)
https://daian-kichijitsu.com/news/info/ 表示されず
・カスタム投稿の個別ページ(例:個別ページのスラッグが「blog-post1」の場合)
https://daian-kichijitsu.com/blog/blog-post1
一覧ページは問題ありませんが、カスタム投稿のカテゴリ―ページでは前回のfunctions.phpでの記述が影響し関係ない「/news/」が入り込んでページが表示されないという由々しき事態です。。
また、投稿の個別ページは投稿のスラッグの前にカテゴリーのスラッグを入れてあげる必要があります。
よって実現したいURLは以下のようになります。
・カスタム投稿のカテゴリ―ページ(例:カテゴリーのスラッグが「info」の場合)
https://daian-kichijitsu.com/blog/info/
・カスタム投稿の個別ページ(例:個別ページのスラッグが「blog-post1」の場合)
https://daian-kichijitsu.com/blog/info/blog-post1
設定
functions.phpの設定
さきほども触れましたが、カスタム投稿のカテゴリ―ページでは前回のfunctions.phpでの記述が影響し関係ない「/news/」が入り込んでページが表示されていません。
「設定」→「パーマリンク」→「パーマリンク構造」→「カスタム構造を選択」
「/%category%/%postname%/」と入力したことで、上の例のようにカテゴリーのスラッグが「info」の場合は
https://daian-kichijitsu.com/blog_cate/info/
と入力してあげるとページは表示されると思います。
こちらを前回の記事のfunctions.phpで、
function my_custom_permalinks( $termlink, $term ,$taxonomy ) {
return str_replace( '/' . $taxonomy . '/', '/news/', $termlink );
}
add_filter( 'term_link', 'my_custom_permalinks', 11, 3 );
「/taxonomy(カスタム投稿の場合『blog_cate』/」を「/news/」と書き換えたために「/blog_cate/」が「/news/」となりページが表示されなくなりました。こちらを解消してあげる必要があります。よってfunctions.phpを以下のように書き換えます。
function my_custom_post_type_permalinks_set($termlink, $term, $taxonomy)
{
return ('blog_cate' === $taxonomy ? str_replace('/' . $taxonomy . '/', '/', $termlink) : str_replace('/' . $taxonomy . '/', '/news/', $termlink));
}
add_filter('term_link', 'my_custom_post_type_permalinks_set', 11, 3);
add_rewrite_rule('news/([^/]+)/?$', 'index.php?category_name=$matches[1]', 'top');
add_rewrite_rule('news/([^/]+)/page/([0-9]+)/?$', 'index.php?category_name=$matches[1]&paged=$matches[2]', 'top');
add_rewrite_rule('blog/([^/]+)/?$', 'index.php?blog_cate=$matches[1]', 'top');
add_rewrite_rule('blog/([^/]+)/page/([0-9]+)/?$', 'index.php?blog_cate=$matches[1]&paged=$matches[2]', 'top');
こちらで
https://daian-kichijitsu.com/news/info/ が生きるようになりました。
Custom Post Type Permalinks
ここからはプラグイン「Custom Post Type Permalinks」を使用していきます。
まずこちらを検索してインストールします。続いて有効化しましょう。
「設定」→「パーマリンク」そこからさらに下のほうにスクロールすると今までなかった「カスタム投稿タイプのパーマリンク設定」が現れます。
「カスタム投稿タイプのパーマリンク設定」に「/%blog_cate%/%postname%/」と入力し、そのすぐ下の、カスタマイズされたカスタムタクソノミーのパーマリンクを使用する。の項目にチェックを入れて「変更保存」をクリック。こちらでカスタム投稿のタクソノミーページ、投稿の個別ページも実現したい以下のようなURLになったかと思います!
・カスタム投稿の一覧ページのURL(例)
https://daian-kichijitsu.com/blog/
・カスタム投稿のカテゴリ―ページ(例:カテゴリーのスラッグが「info」の場合)
https://daian-kichijitsu.com/blog/info/
・カスタム投稿の個別ページ(例:個別ページのスラッグが「blog-post1」の場合)
https://daian-kichijitsu.com/blog/info/blog-post1
コメント