ど素人から毛を生やす。<延>

カスタム投稿のURLを変更する方法

Web > WordPress > カスタム投稿 2014年12月11日(最終更新:2年前)

このページは2014.12.11に作成されています。時代の流れとそぐわない可能性があったり、僕が今以上のど素人だった頃の記事だったりするので、新しい記事を探してみるのも良いかもしれません。

どもです。

今回はちょっと大きなサイトの製作。
しかも珍しく、コーディング、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');
この記事は役に立ちましたか?
  • _(:3」∠)_ 面白かった  (0)
  • (・∀・) 参考になった (0)
  • (`・ω・´) 役に立った (0)