ここでは、WordPress のプラグイン[Jetpack]のヴァージョン「3.1」以降から利用できるようになった[カスタム コンテンツ タイプ]を使用した際に、アーカイヴ・ページで[カスタム コンテンツ タイプ]の一覧を表示する方法を紹介します。
例えば、仮に[index.php]を用いて通常の「投稿」を一覧表示する際には以下のようなコードを使います。
<?php if (have_posts()) : ?> <ul> <?php while (have_posts()) : the_post(); ?> <li> <a href="<?php the_permalink() ?>"> <?php the_title(); ?> </a> </li> <?php endwhile; ?> </ul> <?php endif; ?>
このコードをベースにして[カスタム コンテンツ タイプ]の一覧を表示させるように修正します。
<ul> <?php $the_query = new WP_Query(); $args = array( 'post_type' => 'jetpack-portfolio' ); $the_query->query($args); if($the_query->have_posts()): while($the_query->have_posts()) : $the_query->the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endwhile; endif; ?> </ul>
基本的には上記のコードを使えば[カスタム コンテンツ タイプ]の一覧を表示させることが可能です。
ただし条件として、「Jetpack経由で[カスタム コンテンツ タイプ]を有効化していること」が挙げられます。
コードの中で「'post_type' => 'jetpack-portfolio'
」と記述している箇所がありますが、これは[Jetpack]を使って[カスタム コンテンツ タイプ]を有効化すると「post_type」のスラッグが自動で「jetpack-portfolio」になるためです。
もし[Jetpack]経由ではなく、他のプラグイン(「Custom Post Type UI」等)を使ったり、テーマファイルの「functions.php」を使って[カスタム コンテンツ タイプ]を導入した場合には、「post_type」で指定する引数はそれぞれ任意のスラッグに置き換える必要があるのでご注意ください。
また、一覧表示させる際のフィルタリングとして、「プロジェクトタイプ」や「プロジェクトタグ」を条件に指定したい場合は、「WP_Query」で引数を指定する箇所に追加でコードを記述します。
<?php $the_query = new WP_Query(); $args = array( 'post_type' => 'jetpack-portfolio', // 「カスタム コンテンツ タイプ」のスラッグ名 'jetpack-portfolio-type' => 'sample-cat', // 「プロジェクトタイプ」のスラッグ名 'jetpack-portfolio-tag' => 'sample-tag' // 「プロジェクトタグ」のスラッグ名 ); $the_query->query($args); if($the_query->have_posts()): while($the_query->have_posts()) : $the_query->the_post(); ?>
以上。
ちなみに[カスタム コンテンツ タイプ]は、「カスタム投稿タイプ」または「カスタム ポスト タイプ」と呼ばれるものと同一の機能です。違いは単に名称だけ。
使いこなすとサイトの拡張も管理もラクにできるようになり、非常に便利な機能です。ぜひ導入を検討してみてはいかがでしょうか。