①functions.phpを編集
まず、新しいカスタム投稿をつくります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// カスタム投稿タイプ function add_custom_post_type(){ register_post_type( 'works', // 投稿タイプ名(スラッグの指定) array( 'label' => '制作実績', // 投稿タイプの名前(管理画面に表示される名前) 'public' => true, // 利用する場合はtrueにする(表示する) 'has_archive' => true, // この投稿タイプのアーカイブを使用する 'hierarchical' => true, // 記事に親子関係を持たせるかどうか 'menu_position' => 5, // この投稿タイプが表示されるメニューの位置(5だと投稿の下、10だとメディアの下など) 'menu_icon' => 'dashicons-edit', // 管理画面で表示されるアイコン(WP公式のアイコン一覧から選べる これは鉛筆アイコンを表示) 'supports' => array( // サポートする機能(使用する機能) 'title', //タイトル 'editor', //エディター(本文) 'thumbnail' //サムネイル ) ) ); } add_action('init', 'add_custom_post_type'); |
パーマリンクの設定を更新する
「設定」→「パーマリンク設定」から何も変更せずに「変更を保存」を押して更新します。
こうすることでデータベースが書き換えられ、カスタム投稿でつくった記事が表示されます。
カスタムタクソノミーを作成する
続いて、カスタムタクソノミーを追加します。
カスタムタクソノミーとは、カテゴリーやタグなど、記事を分類する要素のことを指します。
ワードプレスの「投稿」には元々カテゴリーやタグを追加することができますが、カスタム投稿の場合はこれらを自分でつくる必要があります。
※カテゴリーやタグのことを総称して「タクソノミー」、設定したカテゴリー・タグそのもののことを「ターム」といいます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
function add_custom_taxonomy(){ //カテゴリーを使えるようにする register_taxonomy( 'works-category', // タクソノミーの名前 'works', // 投稿タイプ array( // オプション 'label' => 'カテゴリー', // タクソノミーの表示名(管理画面上の表示) 'hierarchical' => true, // 親子関係の有無 trueだと親子関係を持つカテゴリーになる 'public' => true, // 利用する場合はtrueにする ) ); // タグを使えるようにする register_taxonomy( 'works-tag', // タクソノミーの名前 'works', // 投稿タイプ array( // オプション 'label' => 'タグ', // タクソノミーの表示名(管理画面上の表示) 'hierarchical' => false, // 親子関係の有無 falseだと親子関係を持たないタグになる 'public' => true, // 利用する場合はtrueにする ) ); } add_action('init', 'add_custom_taxonomy'); |
これで作成したカスタム投稿に「カテゴリー」と「タグ」が設定できるようになりました。
カテゴリーが未選択でもデフォルトのカテゴリーが設定されるようにする
カテゴリーにチェックを入れずに記事を公開しても、任意のカテゴリーに自動でチェックが入るようにします。
1 2 3 4 5 6 7 8 9 10 11 12 |
function add_defaultcategory_automatically($post_ID) { global $wpdb; //カスタムタクソノミーのタームを取得 $curTerm = wp_get_object_terms($post_ID, 'works-category');//カスタムタクソノミー名 //ターム指定数が未設定の時に特定のタームを指定 if (0 == count($curTerm)) { $defaultTerm= array(1);//デフォルトに設定したいタームID wp_set_object_terms($post_ID, $defaultTerm, 'works-category');//カスタムタクソノミー名 } } //カスタム投稿を作成する際に指定 add_action('publish_works', 'add_defaultcategory_automatically');//publish_カスタム投稿タイプ名 worksを更新したときにこれを実行 |
カスタムタクソノミー・ターム・カスタム投稿とややこしいのでご注意ください!
カスタムタクソノミー名→「カテゴリー」「タグ」をつくるときにつけた名前。
カスタム投稿→スラッグ。最初につくった。
ターム→カテゴリーのひとつひとつ。「wordpress」「css」など。
①カスタム投稿の記事を表示する
カスタム投稿専用のsingle.phpとarchive.phpをつくります。
single-[投稿タイプ名].php
archive-[投稿タイプ名].php
という名前でファイルを作成します。今回の場合はsingle-works.php、archive-works.phpとなります。
カスタム投稿のスラッグを変えたいとき
私がカスタム投稿をつくったとき、アーカイブページがhttps://○○○○.com/?p=worksになってしまいました。
設定→パーマリンク設定からパーマリンクを投稿名に設定するとhttps://○○○○.com/works/になります。
カスタム投稿の記事一覧をトップページやサイドバーに表示させる場合
トップページなどに記事の一覧を表示させるには、以下のコードを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php $posts = new WP_Query( array( 'post_type' => 'カスタム投稿タイプ', 'posts_per_page' => 3 //表示件数 ) ); if ( have_posts() ) : while ( $posts->have_posts() ) : $posts->the_post(); ?> //ここにループの内容 <?php endwhile;?> <?php else : ?> <p>記事が見つかりません</p> <?php endif; wp_reset_postdata(); ?> |
参考にさせていただきました。
https://plusers.net/wordpress_custom_post
https://miya-system-works.com/blog/detail/147
https://www.irohabook.com/wordpress-cpt-list