WordPressカスタム投稿タイプをカテゴリ・タグ毎にアーカイブ表示させるには

カスタム投稿タイプとは

カスタム投稿タイプはWordPressにおける独自の投稿タイプであり、WordPress毎に設置できます。
カスタム投稿タイプは既存の投稿や固定ページと分けて設置でき、管理画面における独自の名前付けをはじめカテゴリ・タグの設置など細かく設定できるので、一度作ってしまえば投稿者(クライアント等)にとって分かりやすく便利です。

カスタム投稿タイプを新規作成するには、テーマ内のfunction.phpにregister_post_typeを書き込む必要があります。
関数リファレンス/register post type | WordPress Codex 日本語版

カスタム投稿タイプ毎に、独自の「カテゴリ」と「タグ」を設定できます。
これらの「カテゴリ」と「タグ」は見かけのもので、実体は「カスタム分類(=カスタムタクソノミー)」です。
カスタム分類 | WordPress Codex 日本語版
カスタム投稿タイプ、カスタムタクソノミーについて整理してみた|free WordPress Theme Principle

カスタム投稿タイプに独自の「カテゴリ」「タグ」(カスタム分類)を設定するには、
function.phpにregister_taxonomyを追記します。
関数リファレンス/register taxonomy | WordPress Codex 日本語版

カスタム投稿タイプの「カテゴリ」「タグ」毎のアーカイブページを作成・表示

カスタム投稿タイプの「カテゴリ」や「タグ」毎のアーカイブページ(archive.php的なもの)が必要な場合、以下の作業が必要です。

taxonomy_{$taxonomy}.php という名前のファイルをテーマ内に作り、archive.php等と同様に内容を書き込んでいきます。
ここでの$taxonomyとは、’register_taxonomy’で設定した$taxonomy(Codex)であり(「{」と「}」は不要)、
分かりやすく書くと
taxonomy_カスタム分類名.php
です。
カスタム分類名をカスタム投稿タイプ名と混同しないよう注意。
ちなみに、カスタム分類名には「-(ハイフン)」を含まないほうが良さそうです。「_(アンダーバー)」はOK。
カスタムタクソノミーのアーカイブページで404エラー|WordPress日本語フォーラム

設置の例

例)
WordPress設置URL http://example.com/
カスタム投稿タイプ名「events」($custom_post_type)
カスタム分類名「events_cat」($taxonomy)
管理画面よりevents_catにカテゴリ「スポーツ」(スラッグ=「sports」)を追加

とした場合、

taxonomy-events_cat.php
を作り

http://example.com/events_cat/sports/
にアクセスすると、
カテゴリ「sports」に該当する記事のアーカイブが表示されるはず。

補足: パーマリンクのカスタマイズ

http://example.com/events_cat/sports/ (events_cat はカスタム分類名)

http://example.com/events/sports/ (events はカスタム投稿タイプ名)
と表記したい場合には、
function.php内のregister_taxonomyに
‘rewrite’ => array(‘slug’ => ‘events’)
と追記すればOKです。
カスタム分類のページの URL を変更する|webdesign leaves

.htaccessでホームページアドレスのwwwあり・なしを統一しよう


Fatal error: Uncaught Error: Call to a member function id() on array in /home/pasolavo/pasolavo.com/public_html/web/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php:36 Stack trace: #0 /home/pasolavo/pasolavo.com/public_html/web/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php(538): CrayonFormatter::format_code('', Array, Object(CrayonHighlighter)) #1 [internal function]: CrayonFormatter::delim_to_internal(Array) #2 /home/pasolavo/pasolavo.com/public_html/web/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php(516): preg_replace_callback('#()#msi', 'CrayonFormatter...', 'RewriteEngine o...') #3 /home/pasolavo/pasolavo.com/public_html/web/wp-content/plugins/crayon-syntax-highlighter/crayon_highlighter.class.php(166): CrayonFormatter::format_mixed_code('RewriteEngine o...', Object(CrayonLang), Object(CrayonHighlighter)) #4 /home/pasolavo/pasolavo.com/public_html/web/wp-content/plugins/crayon-syntax-highlighter/crayon_highlighter.class.php(186): CrayonHighlight in /home/pasolavo/pasolavo.com/public_html/web/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 36