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

やりました!これが正しい構造です!
 
 
※ なお、これが通用するのはプラグイン「Custom Post Type Permalinks」をインストールしていて、
  当該カスタム投稿タイプのパーマリンクを

  /%blog_cat%/%post_id(とかpostname)%/

  に設定している場合のお話です。
  カテゴリ分けしない場合はこの限りではありません。
 
※ Custom Post Type Permalinksは
  どうしてもインストールしておきたいプラグイン10選
  でご紹介しておりますのでそちらも参照してください。


関連するWordPressカスタマイズ事例