WordPressカスタム投稿タイプを使って商品紹介ページを作ったよ-part2
さて、前回のポストの続き!
投稿はできるようになりました…が「カスタム投稿タイプ」用のテンプレートを作らねば!
ん、WordPress3.1からカスタム投稿タイプのメインインデックスが表示できるようになった?
試しにひとつ記事を書いてみる。
カスタム投稿タイプの投稿タイプ名を「uniform」にしたので、
「http://blog.hr07.net/uniform/」または「http://blog.hr07.net/?post_type=uniform」へアクセスすると…テンプレートを制作しなくても表示される!
アーカイブのテンプレート「archive.php」を使って表示しているようです。
…が、カテゴリーを作ってないので表示されないとこもあるし、ちょっと修正する必要が。
カスタム投稿タイプでカテゴリー分類を作るときは、「カスタムタクソノミー」を設定します。
カテゴリーを作るために、「functions.php」に記入。
//ユニフォームカスタムタクソノミー(商品分類) register_taxonomy( 'league', 'uniform', array( 'label' => 'カテゴリー', 'hierarchical' => true, ) ); ?>
‘league’というタクソノミー(分類)を’uniform’の投稿に設定。分類名ラベルを’カテゴリー’という名前に。
ユニフォームのメニューの中に、「カテゴリー」というメニューが追加されます。
クリックすると、カテゴリーを設定する画面に。
ここで名前とスラッグ(英数字)を入力して、カテゴリーを作成します。
「プレミアリーグ、リーガ・エスパニョーラ、セリエA、ブンデスリーガ、その他のリーグ、ナショナルチーム」。
これでカテゴリー分けはOK。
参考サイト
ようやくテンプレート作成へ(^^)。
デザインはあまり変えない予定なので、タイトルの変更とカテゴリー表示部分を変更し、さらに商品情報を入れるカスタムフィールドを追加予定。
WordPress3.1から「register_post_type()」でカスタム投稿タイプを追加するときに、「has_archive=true」を設定すると、archive-{post_type}.php を使うことができるようになったので、先に作った「functions.php」に追加(defaultでは’true’らしい)。
「archive-uniform.php」を作って商品情報のインデックスにすることにします。
「archive.php」を複製して「archive-uniform.php」を作成。
タイトルを「ユニフォーム」に変更し、以下カテゴリー表示欄を変更。
//変更前 <li class="cat"><?php the_category(', '); ?></li> //変更後 <li class="cat"><?php echo get_the_term_list( $post->ID, 'league', '', ', ', '' ); ?></li>
参考サイト
これで商品紹介インデックスページができあがりっ。
今度は、商品インデックスのタイトルをクリックしてシングルページ(個別投稿表示)を見てみると…ここは「single.php」が適応されているようです。
ここも少しカスタマイズしたいので、同様に「single-uniform.php」を作成。
single-{post_type}.php – 投稿タイプが「uniform」の場合は single-uniform.php (バージョン 3.0 以降)。
商品インデックスページ同様、カテゴリー表示欄を変更しました。
ここで問題がひとつ…
今ほど作ったカテゴリー表示欄のリスト表示「get_the_term_list」にリンクが貼られています。
クリックすると「404.php」が!ページが見つかりません(ノД`)。
カスタムタクソノミーで作った各カテゴリーアーカイブのページを作る必要がでてきました(まぁ、あったほうが親切だから作らなきゃね)。
カスタム分類テンプレートを作成。テンプレート階層は…
1.taxonomy-{taxonomy}-{term}.php – 例えば分類名が “league”、スラッグが “premier-legue” の場合は taxonomy-league-premier-league.php
2.taxonomy-{taxonomy}.php – 例えば分類名が “league” の場合は taxonomy-league.php
全カテゴリー(カスタム分類ページ)が同じテンプレートで良いので「2」を採用。
「archive-uniform.php」を複製し、「taxonomy-league.php」に名前を変更。
タイトル部分を以下のように書き換えて、カスタム分類名を呼び出し。
<div class="pageTitle"> <?php $type = get_post_type_object($post->post_type); ?><?php echo esc_attr($type->label); ?> : <?php echo get_the_term_list( $post->ID, 'league', '', ', ', '' ); ?> </div>
参考サイト
おおっ、これでページとして機能するようになったよ!
メインメニューに「uniform」を追加して、「http://blog.hr07.net/uniform/」にリンクを張る。
商品紹介ページの完成です!
この次は、商品の情報を入力できるように「カスタムフィールド」を作っていこう!
長くなるので「part3」に続く…