サイトで、まとめ記事を別に表示してみようと思い立ったので、早速テンプレートを改造してトップページにまとめ記事だけを別くくりで表示するようにしました。(カテゴリー別や特定カテゴリーを除外したり表示する方法については、以前書いた記事にもあり、その延長線上の記事になります。)
特定カテゴリーを別枠で表示させる
使用したテーマは、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>


コメント