どもです。
今回はちょっと大きなサイトの製作。
しかも珍しく、コーディング、WordPress積み、all僕なので否応でも気合が入るというもの。
で、そのサイトは静的とWordPressがごっちゃになっている上に、「○○ブログ」が2種類あるのだけれど、URLは「ドメイン/blog/カスタム投稿名…」になっているのが理想なのだそうで。
さて、いつもならともかく、ここで妥協する理由はないな(゚∀゚)
まずは本体(タクソノミーでない)のURLを変えるお!
カスタム投稿タイプをfunctions.phpで宣言するときの命令文ちょっと変えるだけ。
add_action( 'init', 'create_post_type' );
function create_post_type() {
register_post_type('カスタム投稿名(半角)',
array(
(~中略~)
'rewrite' => true,
(~中略~)
)
)
);
}
この'rewrite' => true,の部分を…
'rewrite' => array('slug' => '変更したいURL(/で区切って多階層にしてもOK)'),
これだけでおkです。
ページ送り等も問題なし。
そしてタクソノミーのURLも変えるお!
カスタム投稿の場合、カテゴリーやタグの設定をしているときは、そちらを別途指示しなければなりません。
register_taxonomy(
'タクソノミー名',
'カスタム投稿タイプ名',
array(
'hierarchical' => true,
'label' => 'カテゴリー',
'show_ui' => true,
'query_var' => true,
'rewrite' => array( 'slug' => '変更したいURL(/で区切って多階層にしてもOK)' ),
'singular_label' => 'カテゴリー'
)
);
}
やることはカスタム投稿タイプのときと同じ。
タクソノミーのスラッグととカスタム投稿タイプのスラッグを同じにする場合、いつものページ送り対策をお忘れなく。
add_rewrite_rule('変更後のスラッグ/([^/]+)/page/([0-9]+)/?$', 'index.php?タクソノミー名=$matches[1]&paged=$matches[2]', 'top');