目次
WordPressでカスタム投稿を用意する際、多くの初心者のかたはプラグインに頼りがちです。便利ですからね。
しかし、プラグインを使いすぎると、サイトが重くなってパフォーマンスに影響が出ることもあります。
特に、サイトの軽量化やパフォーマンスの最適化を目指す場合、なるべくプラグインに頼らない方法がオススメです。
今回は functions.php に直接コードを書いてカスタム投稿を作成する方法を紹介します。
functions.php に記載するコード
以下は、WordPressのfunctions.phpに記述することで、カスタム投稿「商品」を作成し、その投稿にカテゴリー機能を追加するコードです。
function add_my_custom_post() { register_post_type ( 'my-custom-post', // カスタム投稿スラッグ array( 'label' => '商品', // カスタム投稿名 'description' => '', 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'capability_type' => 'post', 'hierarchical' => false, 'rewrite' => true, 'query_var' => false, 'has_archive' => true, 'exclude_from_search' => false, 'supports' => array( 'title', 'editor', 'author', 'revisions', 'thumbnail', 'excerpt', 'comments' ), 'has_archive' => true, 'rewrite' => array( 'slug' => 'product', // カスタム投稿のスラッグ上書き 'with_front' => false ) ) ); register_taxonomy( 'my-custom-cat', // カスタムカテゴリー 'my-custom-post', // カスタムカテゴリーを紐づけるカスタム投稿 array( 'label' => 'カスタム・カテゴリー', 'hierarchical' => true, // カテゴリー・タイプ 'rewrite' => array('slug' => 'custom-cat'), ) ); register_taxonomy( 'my-custom-tag', // カスタムタグ 'my-custom-post', // カスタムタグを紐づけるカスタム投稿 array( 'label' => 'カスタム・タグ', 'hierarchical' => false, // タグ・タイプ 'rewrite' => array('slug' => 'custom-tag'), ) ); } add_action( 'init', 'add_my_custom_post' );
このコードを functions.php に追加することで、カスタム投稿タイプ「商品」と、それに対応する「カスタム・カテゴリー」と「カスタム・タグ」というタクソノミーが作成されます。投稿と同じように、管理画面から新しい記事を追加できるようになり、それをカテゴリー分けし、タグ付けすることも可能になります。
例えば「supports」の配列ではカスタム投稿の機能を指定しますが、特定の要素が不要であれば削除可能です。また、カスタム投稿のスラッグ上書きやアーカイブの設定も柔軟にカスタマイズできるため、サイトの構造や用途に応じて調整してください。
カスタム投稿を表示するためのテーマファイル
カスタム投稿を設置したら、次はそれを表示するためのテンプレートを用意します。
今回のケースの場合、アーカイブ表示のときは「archive-my-custom-post.php」を。
カスタム投稿個別ページは「single-my-custom-post.php」を用意すればOKです。
アーカイブ表示用のテンプレート:archive-my-custom-post.php
WordPressでは、カスタム投稿の一覧ページ(アーカイブページ)を表示するために、「archive-」の後にカスタム投稿スラッグを付けたテンプレートファイルを使用します。
たとえば「my-custom-post」というカスタム投稿を作成した場合、アーカイブページを表示するには「archive-my-custom-post.php」というファイルをテーマに追加します。
例:「archive-my-custom-post.php」の中身
<?php get_header(); ?> <div class="custom-archive-container"> <h1><?php post_type_archive_title(); ?></h1> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <div class="custom-post-item"> <a href="<?php the_permalink(); ?>"> <h2><?php the_title(); ?></h2> <p><?php the_excerpt(); ?></p> </a> </div> <?php endwhile; else: ?> <p>No posts found</p> <?php endif; ?> </div> <?php get_footer(); ?>
個別表示用のテンプレート:single-my-custom-post.php
各カスタム投稿の個別ページを表示するためのテンプレートも必要です。通常の投稿であれば single.php が使われますが、カスタム投稿タイプ用には「single-」の後にカスタム投稿のスラッグを付けたファイル名が使われます。
たとえば「my-custom-post」というカスタム投稿に対応する個別ページをカスタマイズしたい場合、「single-my-custom-post.php」というテンプレートファイルを作成します。
例:「single-my-custom-post.php」の中身
<?php get_header(); ?> <article class="custom-post"> <h1><?php the_title(); ?></h1> <div class="post-content"> <?php the_content(); ?> </div> </article> <?php get_footer(); ?>
そもそもカスタム投稿とは?
「そもそもカスタム投稿ってなに!?」という方々のために簡単にご説明。
WordPressにはデフォルトで「投稿」機能が備わっており、それがワードプレスの醍醐味とも言えます。
一般的に「投稿」はブログ記事やお知らせの更新に使用されます。しかしサイトの内容が複雑になってくると、1つの投稿タイプだけでは運用が難しくなります。
例えば。企業のウェブサイトで「製品情報」を紹介する記事と「お知らせ」を同じ「投稿」にまとめてしまうと、見た目や管理が煩雑になります。
このような場合に役立つのが「カスタム投稿」です。
カスタム投稿を使うことで「製品情報」や「イベント」「レシピ」「お知らせ」等々を別々に管理できるようになり、情報を整理して扱うことにより、インターフェース側でも美しく表示できます。
具体例
自社の商品を紹介する「製品」というカスタム投稿と、通常のお知らせを掲載する「お知らせ」というカスタム投稿を作成することで、それぞれの情報を明確に分けて管理できます。
「製品」ページには製品情報だけを表示し、「お知らせ」には会社のイベントや休業日のお知らせだけを表示させると、ユーザーにとってもわかりやすく、管理者にとっても運営がスムーズになります。
カスタム投稿のメリット
- 情報の整理
カテゴリーやタグだけで整理するのではなく、異なる種類のコンテンツを分けて管理することができ、サイト全体の見た目にも影響します。 - SEOの向上
カスタム投稿ごとに異なるURL構造を持たせることができるため、SEOにもプラスになります。 - テーマのカスタマイズが容易
カスタム投稿を使うことで、テーマ内で特定の投稿タイプに応じたデザインを作りやすくなります。
最後に
WordPressでのカスタム投稿の作成は、テーマやサイト全体のパフォーマンスを維持しつつ、サイトを柔軟にカスタマイズするための有効な手段です。プラグインを使わず、functions.phpに直接記述することで、余計なコードの追加を避け、サイトの軽量化にもつながります。
「プラグインを減らしたいけれど、サイトの機能は拡充したい」とお考えの方は、ぜひ今回紹介した方法を試してみてください。