大阪府堺市のWEB制作(ホームページ制作)事務所です

[WordPress]:基本的なカスタム投稿タイプの設定と一覧の出力まで

最終更新日:2022.05.23 [月] 公開日:2017.10.20 [金] カテゴリー:WordPress 備忘

カスタム投稿、今一度自分なりの基本的な流れをざっくり簡潔に、、、ですが書いてみようと思います。




1:カスタム投稿タイプを追加

カスタム投稿タイプ、追加するにはプラグインとかもまあ色々ありますが、私はそんな複雑なことはあまりしないので、function.phpに直接書いてしまっています。
例えば今回は新着情報というカスタム投稿タイプを追加するとします。

/* カスタム投稿タイプ */
add_action( 'init', 'create_post_type' );
function create_post_type() {
  register_post_type( 'news', /* post-type */
    array(
      'labels' => array(
        'name' => __( '新着情報' ),
        'singular_name' => __( '新着情報' )
      ),
      'public' => true,//サイト内検索で引っかかるかどうか
      'menu_position' => 5,//管理画面のメニューの位置
	  'hierarchical' => true,//記事の親子関係の有無
	  'has_archive' => true,//このカスタm投稿タイプのアーカイブページの実装
	  'supports' => array(//supports内は管理画面の記事編集画面で使う項目を設定
            'title',//タイトル
            'editor',//エディター
            'custom-fields',//カスタムフィールド
            'thumbnail',//アイキャッチ実装
            'page-attributes',//属性
            'excerpt'//抜粋文の設定
			)
        )
    );
  

}

2:カスタムタクソノミー追加

1で作ったカスタム投稿タイプにカスタムタクソノミーを追加します。
カスタムタクソノミーとは、簡単に言ってしまえば、設定したカスタム投稿タイプのカテゴリとかタグみたいなもんです。

/* カスタム投稿タイプ */
add_action( 'init', 'create_post_type' );
function create_post_type() {
  register_post_type( 'news', /* post-type */
    array(
      'labels' => array(
        'name' => __( '新着情報' ),
        'singular_name' => __( '新着情報' )
      ),
      'public' => true,//サイト内検索で引っかかるかどうか
      'menu_position' => 5,//管理画面のメニューの位置
	  'hierarchical' => true,//記事の親子関係の有無
	  'has_archive' => true,//このカスタム投稿タイプのアーカイブページの実装
	  'supports' => array(//supports内は管理画面の記事編集画面で使う項目を設定
            'title',//タイトル
            'editor',//エディター
            'custom-fields',//カスタムフィールド
            'thumbnail',//アイキャッチ実装
            'page-attributes',//属性
            'excerpt'//抜粋文の設定
			)
        )
    );
  

//ここからカスタムタクソノミーの設定
register_taxonomy(
    'news_cat1', //カスタムタクソノミー名
    'news', //このカカスタムタクソノミーを反映させる投稿タイプ名
    array(
        'rewrite' => array('slug' => 'news_cat1'), //このカスタムタクソノミーのスラッグ名
	'label' => '新着情報カテゴリーその1', 
        'labels' => array(
            'menu_name' => 'カテゴリー' //管理画面のメニューの名前
        ),
        'public' => true, //公開・非公開の設定
        'hierarchical' => true, //記事の親子関係の有無:カテゴリ的に使うときはtrueにすること
        'has_archive' => true//アーカイブページの実装
    )
);
	
}

これによって以下のようにカスタム投稿タイプのカテゴリー的なものが出現します。

3:カスタム投稿タイプアーカイブとカテゴリ用テンプレート準備

さて、ここまで設定できたら、カスタム投稿用のテンプレートも必要になると思います。

カスタム投稿のアーカイブ
archive-***(カスタム投稿タイプ名).php

カスタム投稿個別ページ
single-***(カスタム投稿タイプ名).php

タクソノミーのアーカイブ(つまりカスタム投稿タイプのカテゴリアーカイブテンプレ)
taxonomy.php
taxonomy-***タクソノミー名.php
taxonomy-***タクソノミー名-***ターム名.php
必要に応じて揃えておきます。

詳しくはこちら
https://wpdocs.osdn.jp/%E3%82%BF%E3%82%AF%E3%82%BD%E3%83%8E%E3%83%9F%E3%83%BC%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88


そもそもタクソノミー ・ターム って何か・・・

私もこれについて、悩んで、そしてなんと言うのが適切なのかわかんないのですが・・・

 

 

 

 

要するに、普通の投稿の「カテゴリ」みたいなもんですね。
タクソノミー:カテゴリの枠、つまりカテゴリーというルール(概念?)
ターム:どんどん追加する枠の中の分類一つ一つ、これが投稿で言うところの一つ一つのカテゴリポジション的な。

ってイメージしてます。。。あってるかどうかは微妙ですが、私はそう言うイメージで使っています。

4:カスタム投稿記事のURL

これはもうパーマリンク設定によって異なると思うのですが・・

たとえば、/post/%post_id%というパーマリンク設定の場合このサイトで先ほどのカスタム投稿を設定した場合は、

https://www.chakoiro.net/post/news
つまり
htp://ドメイン名/post/カスタム投稿タイプ名
これでカスタム投稿タイプのアーカイブ一覧が出ます。

5:サイドなどに置く、カスタム投稿タイプのアーカイブ一覧の出力

私はこれは結構頻繁に使うのですが、プルダウンでのカスタム投稿タイプ月別アーカイブ一覧です。

以下はプルダウンではなくてリストタイプの月別アーカイブです。

limitは何ヶ月分かの設定です。

詳細は以下アドレスご確認ください。
参考)https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/wp_get_archives

6:カスタム投稿タイプのターム一覧とドロップダウン

<ul>
<?php wp_list_categories('title_li=&taxonomy=タクソノミー名'); ?>
</ul>

参考)https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/wp_list_categories

そして、ターム一覧のドロップダウンがどうしても私の未熟な力では上手くいかず。。。ドロップダウンして飛んだ先がわけのわからないアドレスになってしまうのです。お手上げだ・・・

検索して↓こちらすごくわかりやすかったです。
こちらのサイト様のおかげで、リンク付きターム一覧ドロップダウン実装できました!

https://hirashimatakumi.com/blog/4272.html

[php_everywhere] ←このように、簡単にターム一覧のドロップダウンを設置できました!

7:特定カスタムの特定ターム一覧を表示させる

    array( 'カスタム投稿タイプ' ), 'showposts' => 5, 'taxonomy' => 'タクソノミー名', 'terms' => 'ターム名' ); ?> have_posts() ) : ?> have_posts() ) : $query->the_post(); ?>
  • 記事が見つかりません

8:カスタム投稿の月別一覧

9:カスタム投稿タイプ一覧のアドレスを表示させる


パーマリンク設定いじってアーカイブ一覧がちょっとわからなくなった時などに重宝する私。

スポンサーリンク

コメントを残す