サイトで、まとめ記事を別に表示してみようと思い立ったので、早速テンプレートを改造してトップページにまとめ記事だけを別くくりで表示するようにしました。(カテゴリー別や特定カテゴリーを除外したり表示する方法については、以前書いた記事にもあり、その延長線上の記事になります。)
特定カテゴリーを別枠で表示させる
使用したテーマは、Twenty Twelve系統になります。カスタマイズで使う関数には、好みがあると思いますが、ここではget_posts()を使用したので、そのコードと作成の流れについて書きます。
1.トップページで特定カテゴリーを表示する位置にコードを挿入
例として、index.phpファイルに「if ( have_posts() )」があるので、その前の位置に下にあるコードを挿入します。get_template_part(‘content’, ‘ここは任意の名前’)を使いテンプレートを読み込むようにしてます。
<?php if ( is_home() ) : ?> <?php get_template_part( 'content', 'home' ); ?> <?php endif; ?>
2.読み込むテンプレートを作成
例として、content-home.phpファイルを作成します。これで、index.phpファイルにあるget_template_part()により、content-home.phpを読み込むことが出来ます。
次にcontent-home.phpファイルに特定のカテゴリーを表示するためのHTMLやコードを記述をしていきます。
3.特定のカテゴリーを表示するコードを作成
表示するカテゴリーを取得をするためにget_categories()を使用します。
取得したカテゴリーをもとにforeachを使いループ処理していきます。
<?php $categories = get_categories('slug=matome&child_of=0'); foreach($categories as $category) : ?>
get_categories(‘slug=ここにスラッグを記述’)で、表示するカテゴリーを取得するのにスラッグを使用しているので、管理画面の投稿⇒カテゴリーでスラッグを設定しておきます。
そのあと、カテゴリー名を表示したいときは、下のコードを追加します。
<?php echo $category->cat_name; ?>
表示する記事数の設定は、numberpostsで設定します。
下の例は、10記事にしています。
<?php global $post; $args = array( 'numberposts' => 10, 'category' => $category->cat_ID); $mypost = get_posts( $args );?>
カテゴリーの記事の順次取り出して見出しを表示するコードが下になります。
<?php foreach( $mypost as $post ) : setup_postdata($post); ?> <h1 class="entry-title"><time><?php echo the_time('Y年n月j日'); ?></time> <a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentytwelve' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h1> <?php endforeach; ?>
簡潔にタイトルだけ表示する場合、h1タグにあるコードを下にあるコードに変更します。
<?php the_title(); ?>
例として、content-home.phpファイルの全体のコードが下になります。
表示するスタイルを変えたいときは、好みに合わせて編集や追加してください。
<article id="post-info" <?php post_class(); ?>> <?php $categories = get_categories('slug=matome&child_of=0'); foreach($categories as $category) : ?> <header class="entry-header"> <h1 id="entry-title"><?php echo $category->cat_name; ?></h1> </header> <?php global $post; $args = array( 'numberposts' => 10, 'category' => $category->cat_ID); $mypost = get_posts( $args );?> <header class="entry-header"> <?php foreach( $mypost as $post ) : setup_postdata($post); ?> <h1 class="entry-title"><time><?php echo the_time('Y年n月j日'); ?></time> <a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentytwelve' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h1> <?php endforeach; ?> <header class="entry-header"> <?php endforeach; ?> <?php wp_reset_query(); ?> </article>
コメント