WordPressカスタマイズ事例

カスタムタクソノミー(カスタム分類)のスラッグ(URL)を変更してページングもできるようにする

前の事例記事で、SEO的観点からカスタムタクソノミー(カスタム分類)のスラッグをカスタム投稿タイプと同じにする という記事を書きました。

ただ、これだけですとまだやらなければならないことが残っています。
何かというと、
カスタムタクソノミー(カスタム分類)のスラッグをカスタム投稿タイプと同じにすると、カスタムタクソノミー(カスタム分類)のアーカイブページでページングができなくなります!!(なんと!)

これを解決しましょう。解決しなきゃならない。

そこでせっかくなので、
SEO的観点からカスタムタクソノミー(カスタム分類)のスラッグをカスタム投稿タイプと同じにする の続編として進めてみましょう。

例)カスタム投稿タイプ:blog、カスタムタクソノミー名:blog_cat、ターム:term1
だけど、カスタムタクソノミーのスラッグは ’blog’ というケース。

このとき、
http://yourdomain.com/blog/term1/
を開いたら、ターム term1 に属する記事の一覧表示とさらにページングもできるようにします。

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

add_rewrite_rule('blog/([^/]+)/page/([0-9]+)/?$', 'index.php?blog_cat=$matches[1]&paged=$matches[2]', 'top');

これで、blog の2ページ目の中身を blog_cat の2ページ目にします。

で、taxonomy-blog_cat.php で記事一覧取得、表示処理を記述すれば完成です。

タームが2階層になる場合は function.php の記述の部分に下記のように追記していくことで多階層対応もできます。

add_rewrite_rule('blog/([^/]+)/page/([0-9]+)/?$', 'index.php?blog_cat=$matches[1]&paged=$matches[2]', 'top');
add_rewrite_rule('blog/term1/([^/]+)/page/([0-9]+)/?$', 'index.php?blog_cat=$matches[1]&paged=$matches[2]', 'top'); //第二階層用
add_rewrite_rule('blog/term2/([^/]+)/page/([0-9]+)/?$', 'index.php?blog_cat=$matches[1]&paged=$matches[2]', 'top'); //第二階層用

これでようやく、SEOにも強いサイトマップのサイトができますよ、と。


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