カスタム投稿を利用している人は、多いと思います。カスタム投稿って、使い始めると便利なのでついつい使ってしまいますよね。でも、その情報を表示させる為には、なんだか難しい事が色々と書いてあります。

固定ページや通常の投稿ページ、またはサイドバーなどへ表示させるには、一工夫が必要ですが、単純に一覧ページを表示させたいのであれば、超簡単な方法があるので今回は、その方法をご紹介します。(当たり前すぎて、意外と書かれていないのが、今回の方法です。)

カスタム投稿の作り方

まずは、カスタム投稿の作り方ですが、functions.phpに下記のソースコードを追加します。
今回は【お知らせ】のカスタム投稿を制作します。

function add_custom() {
    register_post_type('news', array( //ここにnewsと記述します
        'label' => 'お知らせ', //投稿ページの名前
        'menu_position' => 5,
        'public' => true,
        'supports' => array(
            'title',
            'editor'),
        'has_archive' => true,
        'rewrite' => array(
            'slug' => 'news', //最後にもう一度newsと記述
            'with_front' => false)
    ));
}
add_action('init', 'add_custom');

 

上記の内容をfunctions.phpに追記します。
すでにカスタム投稿を使っている人は、ご自分が使っている、functions.php内の記述を確認してください。

内容の詳しい説明は今回は省略します。(ここは本題では無いので)

カスタム投稿タイプの一覧表示

では、この設定した【お知らせ】一覧を表示させる為に、何をするか。
今回は、シンプルに一覧表示させたいだけですので、何もしません。
新しい表示用ファイルも、phpコードの記述もしません。

表示URLを以下のようにしてそのページを確認してください。
http://●●●●.com/?post_type=news

非常にシンプルですよね。
これはアーカイブページ(archive.php)に一覧が表示されるように、WordPress内で設定されている為です。この一覧を表示させる為には、先程functions.phpに追記した2行目の’news’を?post_type=の後に追記するだけです。
ですので、他のカスタム投稿でも、同じ様に?post_type=の後に、設定した名前を入れる事で、簡単に一覧を表示出来ます。

これだけで、カスタム投稿タイプの一覧が表示されます。
ただ、このままではarchive.phpがそのままの状態で表示されてしまうので、タイトルなどのカスタマイズをしたい人は、ひと手間かけましょう。

アーカイブページの表示優先順位

1.archive-●●●●.php
2.archive.php
3.index.php

アーカイブページのテーマは、上記のようにファイル名で使用される優先順位があります。
ですので、今回はarchive.phpをコピーして、ファイル名をarchive-news.phpへ変更してください。
ファイル名を変更する事で、archive-news.phpはカスタム投稿の【お知らせ】専用表示のファイルに変身しました。
※一般投稿カテゴリーに同じスラッグ名称の「news」を使ってしまうとそちらの一覧表示もこのアーカアイブファイルで表示されてしまうので、注意してください。

単純に、カスタム投稿タイプの一覧を表示したいのであれば、上記の方法がシンプルで手間もかからず簡単です。
表示内容をカスタマイズしたいのであれば、archive-●●●●.phpなどの専用ファイルを作って、内容を変更すれば、他のファイルへの影響が出ないの、便利です。

他のページに表示するには

他の固定ページや、投稿ページ・サイドバーのウィジェットなどで表示したい場合は、呼び出しコードが必要となるので、今回の技は使えませんので、あしからず。

おまけ

WordPressには、今回のようにファイルをコピーしてファイル名称を変更するだけで、専用表示テーマファイルに出来る機能があります。
ファイル名に-(ハイフォン)を付けて、その後にカテゴリー名(スラッグ名)またはカテゴリーID番号などでもOKです。
これが使えるファイルは、下記の通り。

archive.php
category.php
content.php
page.php
single.php

簡単に専用のテーマファイルが作れるので、便利ですがついつい作りすぎて、ファイルだらけにならないように、注意が必要ですよ。

 

 ]]>