トップページに「インフォメーション」というサンプルを付けてみました。
先ず、カスタム投稿タイプの導入にあたっては、function.phpにコードを書き加えるのではなく、
“Custom Post Type UI”というプラグインを利用しています。
フロントページに記事を表示させるには下のコードを使っています。
‘xxx’のところはカスタム投稿タイプ名に変更して下さい。
<?php if(is_home() && !is_paged()): ?><!-- フロントページにのみ表示させるためのコード --> <?php /* カスタム投稿タイプを1ページに5件表示する */ $loop = new WP_Query( array( 'order' => 'asc', 'post_type' => 'xxx', 'posts_per_page' => 5 ) ); while ( $loop->have_posts() ) : $loop->the_post(); ?> <h2 class="entry-title"><?php the_title(); ?></h2> <div class="custom-post-content"> <?php the_content('続きを読む»'); ?> <?php edit_post_link( __( 'Edit', 'twentyeleven' ), '<span class="edit-link">', '</span>' ); ?> </div> <?php endwhile; ?>
上の例はインフォメーション1の場合です。
インフォメーション2の方はブログの記事にも書きましたが、こちらにも書いておきます。
こちらは条件分岐を省略しています。
それから、表示順をデフォルトとは逆になるようにしていますので注意が必要です。
ページIDを取得するコードの前に”t”を入れているのは、ソース的NGを回避するためです。
<ul> <?php /* カスタム投稿タイプをタイトルのみ5件まで表示する */ $loop = new WP_Query( array( 'post_type' => 'xxx', 'posts_per_page' => 5 ) ); while ( $loop->have_posts() ) : $loop->the_post(); ?> <li><a href="(ループ表示させるページのURL)#t<?php the_ID(); ?><strong><?php the_title(); ?></strong></a> <em>(<?php the_time('Y/n/j'); ?>)</em> <?php edit_post_link( __( 'Edit', 'twentyeleven' ), '<span class="edit-link">', '</span>' ); ?></li> <?php endwhile; ?> </ul>
個別ページに飛ぶようになっていますが、何もしないとsingle.phpが表示されます。
single.phpと異なったものを表示させたい場合はsingle-xxx.php(xxxの部分は投稿タイプ名)を準備します。
また、記事の表示させ方によってはcontent-xxx.php(xxxの部分はsingle.php内で指定した投稿タイプ名)も用意しないといけません。
例えば、”author”や”date”などが必要ないのであれば、CSSで”display:none”を使うよりも最初からその部分を取り除いておいた方がファイルのサイズが小さくて済みます。
インフォメーション2はタイトルをクリックすると個々の詳細記事に直接ジャンプするようにしています。
記事毎の個別ページを表示させるよりも、件数が少ない上に記事も短い場合は
1ページに全件表示させた方がスマートかもしれません。
目的の固定ページテンプレートを用意してやれば簡単にできます。
記事をループ表示させる部分のコードは以下の通りです。
<?php $loop = new WP_Query( array( 'order' => 'asc', 'post_type' => 'xxx', 'posts_per_page' => 5 ) ); while ( $loop->have_posts() ) : $loop->the_post(); ?> <h2 id="t<?php the_ID(); ?><?php the_title(); ?></h2> <div class="custom-post-content"> <?php the_content('続きを読む»'); ?> <?php edit_post_link( __( 'Edit', 'twentyeleven' ), '<span class="edit-link">', '</span>' ); ?>