カスタム投稿タイプと、カスタムタクソノミ

emulsion テーマでの、カスタム投稿タイプ、カスタムタクソノミについて説明します。

まずは、カスタム投稿タイプと、カスタムタクソノミを作成してみたいと思います。

functions.php

add_action( 'init', 'prefix_create_post_type' );
function prefix_create_post_type() {
	register_post_type( 'news', array(
		'labels'		 => array(
			'name'			 => __( 'ニュース一覧' ),
			'singular_name'	 => __( 'ニュース' ),
			'add_new'		 => __( 'ニュースを新規作成' ),
			'edit_item'		 => __( 'ニュースを編集' ),
		),
		'public'		 => true,
		'has_archive'	 => true,
		'show_in_rest' => true,
	) );
	add_post_type_support( 'news', array( 'title', 'editor', 'thumbnail', 'excerpt', 'custom-fields', 'author' ) );	
	
	$args = array(
		'label'			 => 'ニュースカテゴリー',
		'labels'		 => array(
			'edit_item'		 => 'ニュースカテゴリーを編集',
			'add_new_item'	 => '新規ニュースカテゴリーを追加',
		),
		'public'		 => true,
		'hierarchical'	 => true,
		'show_in_rest' => true,

	);
	register_taxonomy( 'news_cat', 'news', $args );	
	
}

このコードを記述するとサイドバーに、以下の項目が表示されます。

ニュースを新規作成をクリックし、投稿を作成します。

以上で、投稿を表示することができいるようになります。(404になる場合は、設定/パーマリンクを開きなにも変更しないで、保存を押して再度表示してみてください)

あれ、しかしなんかちょっと物足りないですね

デフォルトの、投稿カテゴリーや、タグを表示するインサーターとちがって、タクソノミ用のインサータがないため、カスタムタクソノミ一覧ページを表示することができません。

カスタム投稿タイプ ‘news’ のインサータを追加してみましょう。

emulsion/js/block-fse.js を開いて、post-terms にバリエーションを追加します。

    wp.blocks.registerBlockStyle('core/post-template', {
        name: 'layout-wide',
        label: 'Contents Alignwide',
        isDefault: false
    });
    //ここにバリエーションを追加
    wp.blocks.registerBlockVariation(
        'core/post-terms',
        {
            name: 'news_cat',
            icon: 'category',
            isDefault: false,
            attributes: {term: 'news_cat'},
        },
    );


});

これで、ニュースカテゴリーがインサーターに追加されました。

インサーターの呼び出しは、/term で行えます

これで、投稿に、カスタムタクソノミーアーカイブへのリンクが表示できるようになります。

この表示には、templates/taxonomy.html テンプレートが使用されます。

カスタム投稿タイプとデフォルトテンプレート

新規テンプレートを作成した場合、カスタム投稿タイプ用のデフォルトテンプレートは用意されていないため、表示は、テーマのものと大きく異なります。

emulsion テーマの場合、カスタム投稿タイプ用のデフォルトテンプレートを作成することができますので、テンプレートも作成しておくといいかもしれません。

例えば、テーマの default-templatesホルダーを開き、block-template-default-page.php を コピーして、block-template-default-news.phpを追加します。

ページと同じレイアウトでテンプレートが適用されます。

モバイルバージョンを終了