カスタマイズ 2021.07.26 2023.07.26
WordPressのカスタム投稿について
しかし、クライアントのサイトの改修など、プラグイン無しでカスタム投稿を導入しなければならないケースもあるでしょう。
今回は、カスタム投稿タイプをプラグイン無しで導入する方法について解説していきます。
目次
カスタム投稿タイプをプラグイン無しで導入する方法
カスタム投稿をプラグインを使用せずに追加するには、functions.phpにカスタム投稿タイプを使用できる処理の記述が必要です。
functions.phpを使用したカスタマイズ方法は、PHPを編集する必要があるため、FTP経由で本番環境からファイルを落としてから作業するか、Local by FlywheelやDockerを使用するなど、ローカル環境にWordPress環境を構築してから行ってください。
functions.phpを使用して、カスタム投稿を追加する場合は、register_post_typeというテーマ関数を使用します。
以下のように記述を行うことで、プラグインを使用しなくてもカスタム投稿を追加することができます。
【コード1】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?php // カスタム投稿を追加する function create_post_type() { $post_type_args = [ 'labels' => [ // 管理画面上で表示する投稿タイプ名 'name' => '店舗一覧', // カスタム投稿の識別名 'singuluar_name' => 'shops', ], // 投稿タイプをpublicにするかどうか 'public' => true, // アーカイブ機能を有効にするかどうか 'has_archive' => true, // 管理画面上での配置場所 'menu_position' => 5, // Gutenbergを有効にするかどうか 'show_in_rest' => true, ]; // 投稿タイプ名の定義を行う register_post_type('shops', $post_type_args); } add_action('init', 'create_post_type'); |
functions.phpで設定したカスタム投稿タイプが管理画面上に表示されれば成功です。
【画像1】
その際、タクソノミーの設定も可能です。
タクソノミーの設定を行うには、register_taxonomyという関数を使用します。
【コード2】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<?php // カスタム投稿を追加する function create_post_type() { $post_type_args = [ 'labels' => [ 'name' => '店舗一覧', 'singuluar_name' => 'shops', ], 'public' => true, 'has_archive' => true, 'menu_position' => 5, 'show_in_rest' => true, ]; $taxonomy_type_args = [ 'labels' => [ // 管理画面で表示されるタクソノミーの名前 'name' => '都道府県', ], // true・・・カテゴリーのように分類に階層を持たせられる // false・・・タグのように分類に階層を持たせないようにする 'hierarchical' => true, // 管理画面で記事を一覧表示した際に分類名を表示 'show_admin_column' => true, // 記事編集画面にタクソノミーの一覧を表示する 'show_in_rest' => true, ]; // 投稿タイプ名の定義を行う register_post_type('shops', $post_type_args); // タクソノミーの名前と紐付けたい投稿対応の指定を行う register_taxonomy('pref', 'shops', $taxonomy_type_args); } add_action('init', 'create_post_type'); |
ここで重要なのは、 hierarchicalとshow_in_resetという2つのオプションです。
hierarchicalは作ったタクソノミーをカテゴリーとして扱うかタグとして扱うかを選択することができます。
trueにするとカテゴリーのように、falseにするとタグのように扱うことができるようになります。
show_in_resetは、記事編集画面にタクソノミーの編集UIの表示・非表示を選択することができる項目です。
こちらは、基本的にはtrueで問題ありません。
作ったカスタム投稿を表示する
作ったカスタム投稿は、テンプレートを作成することで好きな形式で表示することが可能です。
テンプレートの名前は、single+カスタム投稿の識別名(今回の場合shops).phpにする必要があります。
今回の場合は、single-shops.phpというファイル名になります。
Template NameとTemplate Postには、それぞれ以下の設定を行います。
・Template Name・・・テンプレートの名前(管理画面に表示される)
・Template Post・・・テンプレートを表示するカスタム投稿の識別名(今回だとshopsになる)
【single-shops.php】コード3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php /* * Template Name: 店舗一覧 * Point2: Template Post Typeにはカスタム投稿の識別名を入力する * Template Post Type: shops */ get_header(); $terms = get_the_terms($post->ID, 'pref'); ?> <main id="shops"> <h1><?php the_title(); ?></h1> <div class="category"> <?php foreach ($terms as $term) : $term_link = get_term_link($term->slug, $term->taxonomy); ?> <a href="<?php echo esc_url($term_link); ?>"><?php echo $term->name; ?></a> <?php endforeach; ?> </div> <div class="content"> <?php the_content(); ?> </div> </main> <?php get_footer(); ?> |
上記の設定を行うと、以下のような画面が完成します。
【管理画面】画像2
【フロント】画像3
作ったカスタム投稿は、テンプレート以外の好きな場所にも表示することができます。
WP_Queryを使うとサイト内の好きな場所にカスタム投稿を表示することも可能です。
WP_Queryを使えば、固定ページや投稿ページ、ヘッダーやフッターなど、ページ以外の場所にもカスタム投稿を表示することができるようになります。
【functions.phpにshopsを記載する例】コード4
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php // shopsという名前のカスタム投稿を取得する function get_shops() { $args = [ 'post_type' => 'shops', // -1で全件表示 'posts_per_page' => -1, ]; $query_instance = new WP_Query($args); return $query_instance; } |
functions.phpにshopsというカスタム投稿を取得する処理を行う関数を記述しておくことで、テンプレート内の処理をスッキリさせることができます。
【コード5】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?php // functions.phpで定義した関数を呼び出す $query_instance = get_shops(); if ($query_instance->have_posts()) : while ($query_instance->have_posts()) : $query_instance->the_post(); ?> <div class="shop"> <h2> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> </h2> <div class="category"> <?php $terms = get_the_terms(get_the_ID(), 'pref'); if (!empty($terms)) : foreach ($terms as $term) : $term_link = get_term_link($term->slug, $term->taxonomy); ?> <a href="<?php echo $term_link; ?>"><?php echo $term->name; ?></a> <?php endforeach; endif; ?> </div> </div> <?php endwhile; endif; wp_reset_postdata(); ?> |
主な使用ケース
カスタム投稿の作成方法について解説しましたが、どういう時にカスタム投稿を使用する必要があるのか、いまいち分からないという方もいるでしょう。
カスタム投稿の使用例として、以下のようなケースがあります。
【カスタム投稿を使用するケースの例】
・元から存在する固定ページや投稿ページとは別に、記事の追加や管理をできるようにしたい場合
コンテンツの運用管理をしやすくするために使用するケース
カスタム投稿を使用するケースとして、中規模のサイト(コンテンツ数が200〜300を超えるメディアサイトのようなものを想定)を構築する際、コンテンツの運用管理をしやすくするための使用があります。
例えば、WordPressの管理画面上で口コミを管理する場合、投稿ページだけで記事とクチコミを管理してしまうと、カテゴリーの設定やコンテンツの検索が大変になるなど、コンテンツの保守運用の手間が増えます。
一方、カスタム投稿を利用する場合、クチコミ用のカスタム投稿を作成すれば、記事とクチコミの編集画面を完全に分離できます。
index・noindexの設定も記事やカテゴリーごとではなく投稿タイプごとに行えるので、SEO周りの設定ミスも起きづらくなるかと思われます。
導入基準がよくわからない方は、コンテンツの保守運用が大変になりそうなケースにカスタム投稿タイプを導入すると覚えておけば、間違いはないでしょう。
なお、規模の小さいサイトでは、カスタム投稿を使用する機会は多くありません。
小規模なサイトは、固定ページと投稿だけで事足りてしまう場合が多いからです。
まとめ
今回はカスタム投稿を使用する目的と基本的な使い方についてまとめてみました。
カスタム投稿タイプを導入する際、functions.phpを使う方法を知っておけば、役に立つ機会があるでしょう。
WordPressを業務で使用する方は、覚えておくことをおすすめします。
WordPressサイト制作・カスタマイズなら「wp.make」にお任せ!
WordPressでのサイト制作やリニューアルを検討する時、以下のようなお悩みはありませんか?
- WordPressに詳しい制作会社に依頼したいが、どこがいいかわからない…
- セキュリティ対策をしっかりしたいが、社内にノウハウがないのでプロに任せたい…
- WordPressに最適なサーバーの選定や構築から依頼したい…
- SEO対策や高速化も考慮したサイト構築を行なってほしい…
- 制作後の保守・運用についてもサポートしてほしい…
- 今のサイトを簡単に運用できるようにしてほしい…
「wp.make」は、WordPressのプロフェッショナル集団によるWordPressサイト制作・カスタマイズサービスです。
サイトの制作だけでなく、WordPressに最適なサーバーの選定や構築といったインフラ面の支援から、SEO対策や表示スピードの高速化、高度なセキュリティ対策や制作後の保守・運用サポートまで、WordPressに関わることならあらゆるお悩みを解消いたします。
既存のお客さまからも
「コミュニケーションが取りやすく、クオリティが高い」
「WordPressのプロとして信頼感がある」
と大変ご好評をいただいています。
WordPressサイトの制作・カスタマイズをご検討されているなら、ぜひ以下からお気軽にご相談ください。
WordPress開発・カスタマイズなら 『wp.make』
全案件WordPressのみ!
株式会社e2eの『wp.make』はWordPress専門のWeb制作サービスです。
WordPress案件だけを扱っているから、技術・ノウハウ・対応力が圧倒的!
【WordPressサイト制作でよくあるお悩み】
・運用シーンが想定されておらず、更新しづらかった…
・打ち合わせで専門用語が多くてわかりづらい…
・制作後の保守には対応してくれなかった…
こんな事態になる前に、ぜひ一度、ご相談ください!
WordPressサイトを作るなら、一番WordPressに詳しいところへ!