カスタム投稿タイプとカスタムタクソノミーを追加する方法
専用のプラグインを使用せずに、カスタム投稿タイプとカスタムタクソノミーを追加する方法のメモです。カスタム投稿タイプはプラグインテリトリーに分類されていますが、ここでは子テーマを使用しています。カスタム投稿タイプのテンプレートファイル階層は、テンプレート階層の外観図を参考にしています。
カスタム投稿タイプ
子テーマのfunctions.phpにコピペします。
function silent_child_custom_post_type() {
register_post_type(
'item', // カスタム投稿タイプ名
array(
'label' => 'ブログ2',
'public' => true,
'show_ui' => true,
'hierarchicla' => false,
'menu_position' => 5,
'has_archive' => true,
'taxonomies' => array(
'item-category', // カスタムタクソノミー
'item-tag', // カスタムタクソノミー
),
'show_in_rest' => true,
'supports' => array(
'title',
'editor',
'thumbnail',
'custom-fields',
'excerpt',
'revisions',
),
)
);
}
add_action( 'init', 'silent_child_custom_post_type' );
カスタムタクソノミー
子テーマのfunctions.phpにコピペします。
function silent_child_custom_taxonomy() {
register_taxonomy(
'item-category', // カスタムタクソノミー
'item', // カスタム投稿タイプ名
array(
'label' => 'カテゴリ',
'public' => true,
'show_ui' => true,
'hierarchical' => true,
'show_in_rest' => true,
),
);
register_taxonomy(
'item-tag', // カスタムタクソノミー
'item', // カスタム投稿タイプ名
array(
'label' => 'タグ',
'public' => true,
'show_ui' => true,
'hierarchical' => false,
'show_in_rest' => true,
),
);
}
add_action( 'init', 'silent_child_custom_taxonomy' );
本テーマの場合
本テーマの場合は、上記コードを子テーマのfunctions.phpにコピペするだけで完了します。上記コードの「カスタム投稿タイプ名」と「カスタムタクソノミー」部分を変更しても、「パンくずリスト」「投稿下部メタ情報(カテゴリー、タグ)」「関連記事」等のコードに手を加える必要はありません。
投稿ページ
投稿ページは、「single.php」が適用されています。
アーカイブページ
アーカイブページは、「archive.php」が適用されています。そのままでも使用可能ですが、投稿一覧ページを親テーマと同じレイアウトに変更したい場合は以下の方法で可能です。
- 親テーマの「home.php」ファイルを子テーマにコピペします。
- 子テーマの「home.php」のファイル名を「archive-item.php」に変更します。