標準で用意されている「投稿」「固定ページ」とは別に、ユーザーが独自で投稿タイプを追加することができます。
ユーザーが追加した投稿タイプを「カスタム投稿タイプ」と呼びます。

標準で用意されているタクソノミー(分類)「カテゴリー」「タグ」とは別に、ユーザーが独自でタクソノミーを追加することが出来ます。
ユーザーが追加したタクソノミーを「カスタムタクソノミー」と呼びます。

プラグイン Custom Post Type UI
http://kotori-blog.com/wordpress/custom_post_type_ui/

1つだけカスタム投稿タイプを追加する


	//カスタム投稿タイプを追加
function create_my_post_types() {  //init アクションフックに登録する関数
  //rental というカスタム投稿タイプを登録
  register_post_type(
    'voice',//投稿タイプ名(識別子:半角英数字の小文字)
    array(
      'label' => 'ご利用者の声',  //カスタム投稿タイプの名前(管理画面のメニューに表示される)
      'labels' => array(  //管理画面に表示されるラベルの文字を指定
      'all_items' => '投稿一覧',//管理画面で表示する一覧の名前
        'add_new' => '新規追加',
        'edit_item' => '編集',
        'view_item' => '表示',
        'search_items' => '検索',
        'not_found' => 'データは見つかりませんでした。',
        'not_found_in_trash' => 'ゴミ箱にありませんでした。',
      ),
      'public' => true,  // 管理画面に表示しサイト上にも表示する
      'description' => 'カスタム投稿タイプ「ご利用者の声」の説明文です。',  //説明文
      'hierarchicla' => false,  //コンテンツを階層構造にするかどうか
      'has_archive' => true,  //trueにすると投稿した記事の一覧ページを作成することができる
      'show_in_rest' => true,  //新エディタ Gutenberg を有効化(REST API を有効化)
      'supports' => array(  //記事編集画面に表示する項目を配列で指定することができる
      'title',  //タイトル
      'editor',  //本文の編集機能
      'thumbnail',  //アイキャッチ画像(add_theme_support('post-thumbnails')が必要)
      'excerpt',  //抜粋
      ),
      'menu_position' => 5, //「投稿」の下に追加
    )
  );
}
//init アクションフックで登録
add_action('init', 'create_my_post_types');

複数カスタム投稿タイプを追加する


	//カスタム投稿タイプを追加
function create_my_post_types() {  //init アクションフックに登録する関数
  //rental というカスタム投稿タイプを登録
  register_post_type(
    'voice',//投稿タイプ名(識別子:半角英数字の小文字)
    array(
      'label' => 'ご利用者の声',  //カスタム投稿タイプの名前(管理画面のメニューに表示される)
      'labels' => array(  //管理画面に表示されるラベルの文字を指定
        'add_new' => '新規追加',
        'edit_item' => '編集',
        'view_item' => '表示',
        'search_items' => '検索',
        'not_found' => 'データは見つかりませんでした。',
        'not_found_in_trash' => 'ゴミ箱にありませんでした。',
      ),
      'public' => true,  // 管理画面に表示しサイト上にも表示する
      'description' => 'カスタム投稿タイプ「ご利用者の声」の説明文です。',  //説明文
      'hierarchicla' => false,  //コンテンツを階層構造にするかどうか
      'has_archive' => true,  //trueにすると投稿した記事の一覧ページを作成することができる
      'show_in_rest' => true,  //新エディタ Gutenberg を有効化(REST API を有効化)
      'supports' => array(  //記事編集画面に表示する項目を配列で指定することができる
      'title',  //タイトル
      'editor',  //本文の編集機能
      'thumbnail',  //アイキャッチ画像(add_theme_support('post-thumbnails')が必要)
      'excerpt',  //抜粋
      ),
      'menu_position' => 5, //「投稿」の下に追加
    )
  );


register_post_type( 'video', /* post-type */
	array(
	'labels' => array(
	'name' => __( 'video' ),
	'all_items' => '投稿一覧',//管理画面で表示する一覧の名前
	'singular_name' => __( 'video' )
	),
'public' => true,  // 管理画面に表示しサイト上にも表示する
      'description' => 'カスタム投稿タイプ「ご利用者の声」の説明文です。',  //説明文
      'hierarchicla' => false,  //コンテンツを階層構造にするかどうか
      'has_archive' => true,  //trueにすると投稿した記事の一覧ページを作成することができる
      'show_in_rest' => true,  //新エディタ Gutenberg を有効化(REST API を有効化)
      'supports' => array(  //記事編集画面に表示する項目を配列で指定することができる
      'title',  //タイトル
      'editor',  //本文の編集機能
      'thumbnail',  //アイキャッチ画像(add_theme_support('post-thumbnails')が必要)
      'excerpt',  //抜粋
      ),
      'menu_position' => 6, //「投稿」の下に追加
	)
	);

}
//init アクションフックで登録
add_action('init', 'create_my_post_types'); 

タクソノミーは「投稿タイプ」なので条件分岐は get_post_type() を使います。


<?php if (( get_post_type() == 'lp')): ?>
	<link rel="stylesheet" type="text/css" href="style-lp.css" media="all" />
<?php endif; ?>


★複数ある場合
<?php if (( get_post_type() == 'lp'|| get_post_type() == 'pagecat')) : ?

カテゴリーの一覧表示をさせいたい場合:archive.php を用意する。get_post_typeで読み込ませたいphpファイルを指定。 archive-work


<?php
if ( get_post_type() == 'work') {
	get_template_part( 'archive-work' , false );
}else { //それ以外の場合
	get_template_part( 'single-main' , 'normal');
}
?>

中のペラ1枚を表示をさせいたい場合:single.php を用意する。get_post_typeで読み込ませたいphpファイルを指定。 single-work


<?php
if ( get_post_type() == 'work') {
	get_template_part( 'single-work' , false );
}else { //それ以外の場合
	get_template_part( 'single-main' , 'normal');
}
?>

設置場所のナンバー

カテゴリのように一覧を出す場合

archive.php

archiveをカテゴリーで切り替える


<?php
if ( in_category('bar-s') ) { //特定のカテゴリの場合
	get_template_part( 'archive-naisodesign' , false );
} elseif ( in_category('udon') ) { //スラッグ名
	get_template_part( 'archive-naisodesign' , false );
} elseif ( in_category('apparel') ) { //スラッグ名
	get_template_part( 'archive-naisodesign' , false );
} elseif ( in_category('') ) { //スラッグ名
	get_template_part( 'archive-naisodesign' , false );



} else { //それ以外の場合
	get_template_part( 'archive-main' , 'normal');
}
?>

個別のページ:中身を表示させる場合

single.php

複数タクソノミーがある場合は single-〇〇.php で分けられる。


★single.php

カテゴリーが複数ある場合はarrayで指定する
<?php if(in_category( array( 'bar-design', 'izakaya-design' ) ) ): ?>
ここにタグ
<?php endif; ?>


<?php
if ( ( get_post_type() == 'beautyandbarbar_host') ) {
  get_template_part( 'single-host' , false );
}else { //それ以外の場合
  get_template_part( 'single-main' , 'normal');
}
?>




上記で振り分けて、個別にページをつくっていく
★single-〇〇.php
<?php if (( get_post_type() == 'lp'|| get_post_type() == 'pagecat')) : ?>


<?php $post;
$args = array(
    'post_type' => 'video',//名前
    'numberposts' => 5//表示させる記事の数
);
$myposts = get_posts( $args );
foreach( $myposts as $post ) :  setup_postdata($post);?>
    <?php the_title() ?>
    <?php the_post_thumbnail(); ?>//表示させたい中身を書く
<?php endforeach; ?>

カテゴリを「ランダム5件」表示

ランダムを発生させる 'orderby' => 'rand', を追加


<?php $post;
$args = array(
    'post_type' => 'video',//名前
    'orderby' => 'rand',
    'numberposts' => 5//表示させる記事の数
);
$myposts = get_posts( $args );
foreach( $myposts as $post ) :  setup_postdata($post);?>
    <?php the_title() ?>
    <?php the_post_thumbnail(); ?>//表示させたい中身を書く
<?php endforeach; ?>

カスタム投稿タイプ・カスタム分類


// カスタム投稿タイプ・カスタム分類
add_action('init', 'register_post_type_and_taxonomy');
function register_post_type_and_taxonomy() {

    // ここからカスタム投稿タイプ一個分
    register_post_type(
        'newspaper', // ←投稿タイプ名。任意の半角英数字に書き換えよう。何度も使うので忘れないように
        array(
            'labels' => array(
                'name' => 'ニュース記事', // ←管理画面での表示名
                'add_new_item' => '新規ニュース記事を追加', // ←新規追加するときの表示名
                'edit_item' => 'ニュース記事の編集', // ←編集するときの表示名
            ),
            'public' => true,
            'hierarchical' => true,
            'has_archive' => true,
            'supports' => array(
                'title',
                'editor',
                'excerpt',
                'custom-fields',
                'thumbnail',
                'page-attributes',
            ),
        )
    );
    register_taxonomy(
        'newspaperCategory', // ←カスタムタクソノミーの名前。こちらも任意の英数字に変更しよう
        'newspaper', // ←どの投稿タイプに適用させたいかを指定。ここではニュース記事のカテゴリになる
        array(
            'labels' => array(
                'name' => 'ニュースのカテゴリー', // ←管理画面での表示名
                'add_new_item' => 'ニュースカテゴリーを追加', // ←新規追加するときの表示名
                'edit_item' => 'ニュースカテゴリーの編集', // ←編集するときの表示名
            ),
            'hierarchical' => true, // ←設定
            'show_admin_column' => true,
            'public' => true,
            'show_ui' => true,
        )
    );
    // ~ここまでがひとまとまり。2つ目以降を追加したいときは、「ここから~」からこの行までを複製しよう。
}


<?php $post;
	$args = array(
		'post_type' => 'voice',
		'orderby' => 'rand',
		 'numberposts' => 4
		);
	$myposts = get_posts( $args );
	foreach( $myposts as $post ) :  setup_postdata($post);?>
	<div class="element random sa sa--up">
		<h2><?php the_title() ?></h2>
		<div class="link1"><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?></a></div>
		<?php the_excerpt(); ?>
		<a class="readtext" href="<?php the_permalink(); ?>">→ Read more</a>
	</div>
<?php endforeach; ?>

Thank you!  Word Press