WordPressカスタマイズ事例

SEO的観点からカスタムタクソノミー(カスタム分類)のスラッグをカスタム投稿タイプと同じにする

SEO的観点からも構造的観点からも、カスタムタクソノミー(カスタム分類)とカスタム投稿タイプのスラッグは同じであるべきです。
しかし、WordPressの場合、カスタム投稿タイプを登録しても自動でカスタムタクソノミーを登録してくれません。つまり別物として別途定義しないといけないんですよね。無論、同スラッグにはなりえない。
しかたないのでカスタムタクソノミー(カスタム分類)とカスタム投稿タイプを別の名称で登録するのですが、ここで問題発生です。

例)カスタム投稿タイプ:blog、カスタムタクソノミー:blog_cat、ターム:term1 の場合
何もしなければblogのアーカイブページは
http://kaiza.jp/blog/
になります。
いっぽう記事ページは
http://kaiza.jp/blog_cat/term1/postname
になってしまいます。
見て分かる通り、記事ページがカスタム投稿タイプの下層ページにはなっていません。
構造としてももちろんおかしいし、SEO的にもNOT GOODです。

そこで今回は、カスタムタクソノミー(カスタム分類)の登録において、slugを指定してカスタム投稿タイプと同じにする方法のご紹介。

テーマのfunction.phpに下記を記述します。

/* カスタム投稿タイプ追加 */
register_post_type( 'blog', /* post-type */
	//省略します。
);

/* カスタムタクソノミー カテゴリ追加 */
register_taxonomy('blog_cat','blog', array(
	//省略します。

	'rewrite' => array(
		'slug' => 'blog','with_front' => true,'hierarchical' => true)
));

11行目、

'slug' => 'blog'

ここですココ。
これで、カスタムタクソノミー(カスタム分類)のスラッグをカスタム投稿タイプと同じにできます。

その結果はこうなります。

アーカイブページ
http://kaiza.jp/blog/

記事ページ
http://kaiza.jp/blog/term1/postname

やりました!これが正しい構造です!

※ なお、これが通用するのは「パーマリンク設定 – カスタム構造」で
  「/%category%/%post_id%/」を設定している場合のお話です。
  弊社が手掛けるサイト制作では、記事にカテゴリを設けたいお客様すべてにこの設定をおすすめしております。
  カテゴリ分けしない場合はこの限りではありません。


その他のWordPressカスタマイズ事例