WordPressでオリジナルテーマを作成したら、まず取り掛かる作業の一つがカスタム投稿タイプの作成ではないでしょうか。
この記事では、カスタム投稿タイプの作成方法と作成する意味を書いています。 作成方法だけ知りたい方は目次から飛べますので、そちらをご覧ください。
カスタム投稿タイプを作成する意味
カスタム投稿タイプとは通常の投稿機能とは別に、新たに自分で投稿タイプをカスタマイズできる機能です。
通常の投稿記事とは形式や目的が違う記事を書く場合に効果的な機能で、それだけでなく、うまく活用すればコーポレートサイトなどにも応用できます。
デザイン性
WordPressには初めから”投稿”という項目があり、archive.php、single.phpにデザインを入れれば、ホームページの制作を行うことは可能です。
ブログだけのホームページなどはカスタム投稿タイプを作成する意味はないかもしれません。
しかし、例えば事業内容を5つ紹介し、社内ブログがあり、ステークホルダー向けのお知らせがあるホームページを作りたい場合、”投稿”だけだとどうなるでしょうか。
まず、全ての下層ページはデザインが同じとなるため、事業内容を紹介するページのデザインのままブログもお知らせも表示されることとなります。
もうこの段階でまずいですよね。
ブログがないサイトも多いので置いておくとして、お知らせと事業内容の詳細ページが同じデザインのサイトを見たことはありますか?
おそらくないと思います。
サイトを訪れてくれたユーザーにそれでも情報を届けられるのならば問題ありませんが、デザインはサイトの見栄えだけでなく、そのページに書かれる情報をユーザーにしっかりと届けることも考えて作成されます。
ですので、事業内容とお知らせやブログなどのデザインが同一となるサイトは珍しく、デザイン性を変えるためにもカスタム投稿タイプを作成する意味があります。
作成工程を減らせる
カスタム投稿タイプ別にデザインを変更できるだけでなく、カスタム投稿タイプ毎にデザインが統一されるということを利用して、ページ作成を簡略化することも可能です。
上記の例の事業内容の詳細ページデザインが全て同じでよければ、事業内容のカスタム投稿タイプのsingle.phpを作成すれば完了します。
わざわざ固定ページで1ページ毎に作成する必要もなく、また、事業内容のテンプレートファイルを1ページ毎に作成する必要もありません。
5ページ分のページを作成しなければならない場合でも、single.phpで作業は完了しますので、作成工程は大きく簡略できます。
1ページ毎にデザインを変更することも可能ですが、それは別の記事に書きます。
もし、web制作会社にホームページ制作を依頼しようと考えている方は、費用削減にも繋がりますので、ここを相談してみてください。
カスタム投稿タイプの作成方法
カスタム投稿タイプの作成方法を紹介します。
といっても下記のコードをfunctions.phpにコピペするだけで作成可能です。
ただ、functions.phpは何かあるとサイトが表示されなくなってしまうので、カスタム投稿タイプの作成に限らず、何か作業する際はバックアップを行ってください。
/**
* カスタム投稿タイプ登録
*/
add_action( 'init', 'register_custom_post_type' );
// サムネイル利用
add_theme_support('post-thumbnails');
function register_custom_post_type() {
/**
* カスタム投稿タイプ
* お知らせ
*/
//表示設定
$labels_news = array(
'name' => _x( 'お知らせ', 'news' ),//一覧の投稿タイプ名
'menu_name' => _x( 'お知らせ', 'news' ),//メニューの投稿タイプ名
'edit_item' => __('お知らせを編集'),
'search_items' => __('お知らせを検索'),
'view_item' => __('プレビュー'),
);
//オプション設定
$args_news = array(
'labels' => $labels_news,
'hierarchical' => true,
'supports' => array(
'title',
'editor',
// 'revisions',
'thumbnail',
'page-attributes',
// 'custom-fields'
),
// 'taxonomies' => array(
// 'category',
// 'post_tag',
// 'page-category'
// ),
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 5,//投稿の下に表示
'show_in_nav_menus' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'has_archive' => true,
'query_var' => true,
'can_export' => true,
'rewrite' => array('with_front' => false),
'capability_type' => 'page',//投稿として利用,
'show_in_rest' => true,
);
register_post_type( 'news', $args_news );
コメントアウトしている部分は実際にカスタム投稿タイプを作成するに至って関わりはありませんが、何個もカスタム投稿タイプを作成する場合、どれがどれだかが判別しにくくなってしまうので、記載しています。
もし必要なければ削除してください。
また、今回は「お知らせ」の作成を例としましたが、ブログを作成したい!といった場合には、上記のコードの”news”を”blog”に変更するなど、自分で把握したいものに編集してください。
$labels_blog = array(
'name' => _x( 'ブログ', 'blog' ),//一覧の投稿タイプ名
'menu_name' => _x( 'ブログ', 'blog' ),//メニューの投稿タイプ名
'edit_item' => __('ブログを編集'),
'search_items' => __('ブログを検索'),
'view_item' => __('プレビュー'),
);
//オプション設定
$args_blog = array(
'labels' => $labels_blog,
'hierarchical' => true,
'supports' => array(
'title',
'editor',
// 'revisions',
'thumbnail',
'page-attributes',
// 'custom-fields'
),
// 'taxonomies' => array(
// 'category',
// 'post_tag',
// 'page-category'
// ),
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 5,//投稿の下に表示
'show_in_nav_menus' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'has_archive' => true,
'query_var' => true,
'can_export' => true,
'rewrite' => array('with_front' => false),
'capability_type' => 'page',//投稿として利用,
'show_in_rest' => true,
);
register_post_type( 'blog', $args_blog );
以上がカスタム投稿タイプの作成方法となります。
さらに、タグやカテゴリーを設置したい場合にはカスタムタクソノミーを作成したり、カスタム投稿タイプのアーカイブページ毎の表示数を設定したりとできることは色々とあるので、自分の好みに合わせてカスタマイズしてください。