WP”カスタム投稿タイプ”を使ってブログを複数追加する


WordPressには「投稿タイプ」と「固定ページタイプ」の2種類のコンテンツがあります。
ブログや更新情報、商品情報などのように、常に記事や情報を追加して、ページが増えていくような場合は「投稿タイプ」を使用し、プロフィールや、お問い合せ欄などのように、1枚のページで収まるような場合は「固定ページ」と、使い分けするようになっています。
「固定ページ」は何個でも新規追加できますが、「投稿タイプ」は1個のWordPressに1個が標準装備です。
通常、ブログ機能は1つしかない。1つじゃ物足りないと思ったことはありませんか?

ブログを複数持ちたい場合は、「WordPressのマルチサイト機能で複数サイトを作る」という手もありますが、新たにWordPressをインストールしたくはない、既に運用しているWordPressに別個のブログをちょっと増やしたいだけ、という場合「カスタム投稿タイプ」が簡単で便利です。

というわけで、固定ページタイプで作成した「読書リスト」ページを、「カスタム投稿タイプ」を使って、ブログ形式のページに作り直してみました。単に「カスタム投稿タイプ」を使ってみたいという好奇心だけでやってみましたので、「カスタム投稿タイプ」を作成する一例として、参考程度にご覧ください。

  1. 「カスタム投稿タイプ」を利用してブログを一つ追加する。
  2. 「カスタム投稿タイプ」のカテゴリーを設定できるようにする。
  3. 「カスタム投稿タイプ」を表示させる固定ページを作成する。
  4. カテゴリー別の一覧ページが表示されるようにする。
  5. 「カスタム投稿タイプ」を利用してブログを複数追加する。
  6. 「投稿が見つかりません」とか「404エラー」画面が表示された場合の対処法

1.「カスタム投稿タイプ」を利用してブログを一つ追加する。

functions.phpに以下のコードを追記します。
下記の「booklist」と「読書リスト」という記述は全て、任意の名前に置き換えてください。

// ===========================
// = カスタム投稿 =
// ===========================
function new_post_type(){
 //読書リストページ
 register_post_type(
 'booklist',
 array(
 'label' => '読書リスト',
 'public' => true,
 'hierarchical' => false,
 'has_archive' => true,
 'supports' => array(
 'title',
 'editor',
 'thumbnail',
 'excerpt'
 ),
 'menu_position' => 5
 )
 );
}
add_action('init', 'new_post_type');

7行目のbooklist 英数半角の任意の名前。あとから変更するのは面倒なので、最初できっちり決めておく。
label 任意の名前。日本語でOK。管理画面のメニューに表示される。
public 公開、編集の項目
has_archive trueにするとarchiveが自動的に生成される。
supports 記事編集画面に表示する項目。ここでは、「タイトル」、「本文」、「アイキャッチ画像」、「抜粋」の4項目を指定している。
menu_position 管理画面のメニューに表示する位置。5は「投稿」の下の位置を指定している。
‘menu_position’ で位置指定する数値について

  • 5 – 投稿の下
  • 10 – メディアの下
  • 15 – リンクの下
  • 20 – 固定ページの下
  • 25 – コメントの下
  • 60 – 最初の区切りの下(コメントの下に区切りがある)
  • 65 – プラグインの下
  • 70 – ユーザーの下
  • 75 – ツールの下
  • 80 – 設定の下
  • 100 – 二つ目の区切りの下(設定の下に区切りがある)
    WordPress Codex 日本語版関数リファレンス/register post type」参照

参考サイト:

上記のコードを追加してfunctions.phpをサーバーにアップすると、管理画面のメニューに「読書リスト」の項目が表示されます。
custom01
カスタム投稿の投稿編集ページは下図ようになります。
custom03-1

2.「カスタム投稿タイプ」のカテゴリーを設定できるようにする

functions.phpに、さらにコードを追記します。
”タクソノミーの作成”以下がカテゴリーを設定できるようにするコードです。

// ===========================
// = カスタム投稿 =
// ===========================
function new_post_type(){
 //読書リストページ
 register_post_type(
 'booklist',
 array(
 'label' => '読書リスト',
 'public' => true,
 'hierarchical' => false,
 'has_archive' => true,
 'supports' => array(
 'title',
 'editor',
 'thumbnail',
 'excerpt'
 ),
 'menu_position' => 5
 )
 );
 //タクソノミーを作成
 register_taxonomy(
 'booklist_cat',
 'booklist',
 array(
 'label' => '読書リストカテゴリー',
 'labels' => array(
 'popular_items' => 'よく使う読書リストカテゴリー',
 'edit_item' => '読書リストカテゴリーを編集',
 'add_new_item' => '新規読書リストカテゴリーを追加',
 'search_items' => '読書リストカテゴリーを検索',
 ),
 'public' => true,
 'hierarchical' => true,
 'rewrite' => array('slug' => 'booklist_cat')
 )
 );
 }
add_action('init', 'new_post_type');

booklist_catは1.で決めた任意の名前のうしろにcatをつけたものです。booklistcatと書いてもOKです。
コードを追記してfunctions.phpをサーバーにアップすると、下図のように、管理画面の「読書リスト」メニューに、「読書リストカテゴリー」の項目が表示されます。custom02-1カスタム投稿の投稿編集ページにもカテゴリーの項目が表示されます。
custom02-2

3.「カスタム投稿タイプ」を表示させる固定ページを作成する。

カスタム投稿タイプのarchivesページを表示させる方法は、いろいろあるようですが、ここでは専用の固定ページを作成して表示させることにします。
page-book.phpというように、page-任意の名前.phpというテンプレートを作成します。
page-book.phpの1行目にはテンプレートネーム(任意)を記述します。

 <?php /** The template name:booklist */ 

【page-book.phpの記述一例】
divのidやクラス名などは任意の名前に置き換えてください。

<?php
/**
 The template name:booklist
 */
get_header(); ?>
 <div id="primary" class="site-content">
 <?php if ( have_posts() ) : ?>
 <?php /* Start the Loop */ ?>
 <?php query_posts( 'post_type=booklist&posts_per_page=10' ); ?>
 <?php while ( have_posts() ) : the_post(); ?>
 <a href="<?php the_permalink(); ?>"></a><?php echo get_the_term_list( $post->ID, 'booklist_cat', 'Category: ','・','' ); ?>
 <?php get_template_part( 'content', 'page' ); ?>
 <?php endwhile; // end of the loop. ?>
 <!-- ページナビここから -->
<nav class="nav-single">
 <span class="nav-previous"> <?php previous_post_link('前の投稿', TRUE); ?><br/>
 <?php
 $prevPost = get_previous_post(true); //前の記事データを取得
 previous_post_link( '%link', $prevThumbnail.'%title' ); //出力
 ?></span>
 <span class="nav-next"><?php next_post_link('次の投稿', TRUE) ?><br/>
<?php
 $nextPost = get_next_post(true); //次の記事データを取得
 next_post_link( '%link', $nextThumbnail.'%title' ); //出力
 ?></span> </nav>
 <!-- ページナビここまで -->
 <?php endif; // end have_posts() check ?>
 </div><!-- #primary -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>

ループ内の下記コードは、1ページに表示する最大投稿数を設定するコードを記述しています。上記の例では1ページに投稿を10件表示するよう設定しています。

<?php query_posts( 'post_type=booklist&posts_per_page=10' ); ?>
 

ループ内の下記コードは、カスタム投稿のカテゴリー表示をしています。

<a href="<?php the_permalink(); ?>"></a><?php echo get_the_term_list( $post->ID, 'booklist_cat', 'Category: ','・','' ); ?>

プラグインWP-PageNaviを導入している場合は、ページナビの部分を下記コードに置き換えてもOKです。

<?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?>

page-book.phpテンプレートを作成してサーバーにアップしたら、管理画面で任意の名前の固定ページを追加します。
タイトルだけ入力し、本文は空白のままで構いません。
テンプレートの選択項目はpage-book.phpの冒頭に記述したテンプレート名を選択します。

cusutom000もし、カスタム投稿のテンプレートを選択しても何故かデフォルトテンプレートに戻ってしまうというエラーが起きた場合、実際私は経験してしまったのですが、そのような場合の原因と対処法が下記サイトに書かれていて、助かりました。

既存のブログとは異なるデザインのページにしたい場合は、カスタム投稿専用のテンプレートを作成します。

  • archive-カスタム投稿名.phpを作成する。(例:archive-booklist.php)
  • single-カスタム投稿名.phpを作成する。(例:single-booklist.php)
  • cssでスタイルを整える。

必要ならば、headerやfooter、sidebarなども、専用テンプレートを作成してarchive-カスタム投稿名.php、single-カスタム投稿名.phpに読み込ませたら良い、と私は思っていましたが、検索しているうちに、「条件分岐タグ」を使えば、もっとすっきりとカスタマイズできる、と解説しているサイトに行き当たりました。

下記サイトではカスタム投稿を index.php に表示する方法についても書かれています。

4.カテゴリー別の一覧ページが表示されるようにする。

カテゴリーをクリックするとタイトルの一覧ページが表示できるテンプレートを作成してみます。
テンプレートは、taxonomy-カスタム投稿名cat.phpです。

【taxonomy-booklist_cat.phpの一例】
archive-カスタム投稿名.phpを作成していたら、それを複製して名前を変更するだけでもよいようです。

<?php get_header(); ?>
<div id="primary" class="site-content">
<?php if(have_posts()): while(have_posts()): the_post(); ?>
<div class="book">
<?php echo get_the_term_list( $post->ID, 'booklist_cat', 'Category: ','・','' ); ?>&nbsp;&nbsp;&nbsp;<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</div>
<?php endwhile; endif; ?>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

タイトル一覧が表示されます。
cusutom-last
タイトルだけでなく、投稿内容も表示したい場合は、下記コード部分を

<?php echo get_the_term_list( $post->ID, 'booklist_cat', 'Category: ','・','' ); ?>&nbsp;&nbsp;&nbsp;<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>

下記のように置き換えると投稿内容も表示されるようになります。

<?php echo get_the_term_list( $post->ID, 'booklist_cat', 'Category: ','・','' ); ?>
<?php get_template_part( 'content', 'page' ); ?>

5.「カスタム投稿タイプ」を利用してブログを複数追加する。

functions.phpに以下のようにコードを追記します。
二つ目のカスタム投稿の「document」、「ドキュメント」も任意の名前に置き換えてください。

// ===========================
// = カスタム投稿 =
// ===========================
function new_post_type(){
 //読書リストページ
 register_post_type(
 'booklist',
 array(
 'label' => '読書リスト',
 'public' => true,
 'hierarchical' => false,
 'has_archive' => true,
 'supports' => array(
 'title',
 'editor',
 'thumbnail',
 'excerpt'
 ),
 'menu_position' => 5
 )
 );
 //ドキュメント
 register_post_type(
 'document',
 array(
 'label' => 'ドキュメント',
 'public' => true,
 'hierarchical' => false,
 'has_archive' => true,
 'supports' => array(
 'title',
 'editor',
 'thumbnail',
 'excerpt'
 ),
 'menu_position' => 5
 )
 );
 //タクソノミーを作成
 register_taxonomy(
 'booklist_cat',
 'booklist',
 array(
 'label' => '読書リストカテゴリー',
 'labels' => array(
 'popular_items' => 'よく使う読書リストカテゴリー',
 'edit_item' => '読書リストカテゴリーを編集',
 'add_new_item' => '新規読書リストカテゴリーを追加',
 'search_items' => '読書リストカテゴリーを検索',
 ),
 'public' => true,
 'hierarchical' => true,
 'rewrite' => array('slug' => 'booklist_cat')
 )
 );
 //タクソノミーを作成
 register_taxonomy(
 'document_cat',
 'document',
 array(
 'label' => 'ドキュメントカテゴリー',
 'labels' => array(
 'popular_items' => 'よく使うドキュメントカテゴリー',
 'edit_item' => 'ドキュメントカテゴリーを編集',
 'add_new_item' => '新規ドキュメントカテゴリーを追加',
 'search_items' => 'ドキュメントカテゴリーを検索',
 ),
 'public' => true,
 'hierarchical' => true,
 'rewrite' => array('slug' => 'document_cat')
 )
 );
 }
  add_action('init', 'new_post_type');

コードを追記してfunctions.phpをアップロードすると、管理画面に「ドキュメント」の項目が追加されます。
cusutom001

6.「投稿が見つかりません」とか「404エラー」画面が表示された場合の対処法

カスタム投稿で作成した記事をプレビューすると、「投稿が見つかりません」といった画面が表示されたりします。この場合、管理画面の「設定」にある「パーマリンクの設定」を更新してみると、表示されるようになります。functions.phpのコードを修正したら、その都度パーマリンクの設定を更新した方が良いようです。

参照サイト:

wordpressbookjpg

 

以前「wp自作テーマでショップをリニューアルしました。」で紹介しました「WordPress3.X 現場のワークフローで覚える ビジネスサイト制作 / MdN(エムディエヌコーポレーション) ハヤシ ユタカ著」を、手元に置いて参考にしつつ、ネット検索で下記のサイトを参照させていただきました。

<参考サイト>

コメントはこちらから

お名前は必須項目です。

CAPTCHA


画像を添付できます(JPEGだけ)