1ページにカテゴリー別に分けた全記事一覧を作ってみたいと思う。
ポイントは「ブログのすべての記事を表示する」「それぞれの記事をカテゴリー分けする」の2点。
プラグインを使って実装することもできるが、今回もプラグインを使わないで何とかしたい。
- カテゴリー別全記事一覧の参考になりそうなサイトを見つけた
- 公開されていたカテゴリー別全記事一覧コード
- テンプレートタグを分析してみよう
- is_page(‘sitemap_by_category’)
- ’orderby’ => ‘name’,
- ’order’ => ‘ASC’
- $categories=get_categories($args);
- <?php foreach($categories as $category) { ?>
- $category->count
- <?php the_permalink(); ?>
- thumbnail
- <?php the_title(); ?>
- <?php the_author_posts_link(); ?>
- <?php the_date(‘Y年m月d日’); ?>
- <?php the_excerpt(); ?>
- <?php the_tags(‘Tags: ‘, ‘, ‘, ‘ ‘); ?>
- <?php edit_post_link(‘Edit’, ‘[ ', ' ]‘); ?>
- 課題
- もひとつ参考になりそうなカテゴリー別全記事一覧のサイトを見つけた
カテゴリー別全記事一覧の参考になりそうなサイトを見つけた
インターネットを検索していたらカテゴリー別に振り分けた全記事一覧の作成に参考になりそうなサイトを見つけた。
ということで、まずは勉強がてらその際とで公開されていたコードを分析することにする。
公開されていたカテゴリー別全記事一覧コード
<?php if (is_page(‘sitemap_by_category’)) { ?>
<div id=”sitemap”>
<?php
$args=array(
’orderby’ => ‘name’,
’order’ => ‘ASC’
);
$categories=get_categories($args);
?>
<?php foreach($categories as $category) { ?>
<h3>カテゴリ:<?= $category->name ?>(<?= $category->count ?> 記事)</h3>
<ul>
<?php
global $post;
$myposts = get_posts(‘category=’.$category->term_id.”&orderby=post_date&order=DESC”);
foreach($myposts as $post) : setup_postdata($post);
?>
<li>
<div class=”thumbnail”>
<a href=”<?php the_permalink(); ?>”>
<?php get_thumbnail($post->ID, ‘thumbnail’, ‘alt=”‘ . $post->post_title . ‘”‘); ?>
</a>
</div>
<a href=”<?php the_permalink(); ?>”><?php the_title(); ?></a>
<p class=”postmeta”>Posted by <?php the_author_posts_link(); ?> on <?php the_date(‘Y年m月d日’); ?>
</p><div class=”clear”></div>
<div class=”excerpt”><?php the_excerpt(); ?></div>
<div class=”tag”>
<?php the_tags(‘Tags: ‘, ‘, ‘, ‘ ‘); ?>
<?php edit_post_link(‘Edit’, ‘[ ', ' ]‘); ?>
</div>
</li><br />
<?php endforeach; ?>
</ul><div class=”clear”></div>
<?php }; ?>
</div><!-- end of #sitemap -->
<?php
} else {
the_content(); // 元々のタグ
}
?>
テンプレートタグを分析してみよう
is_page(‘sitemap_by_category’)
ページの条件分岐。
is_page()で固定ページ。
この場合、sitemap_by_categoryという名前のページのばあい表示するくらいの意味だと思う。
’orderby’ => ‘name’,
アルファベット順で名前を呼び出す。
ここではカテゴリー名を呼び出してるんだと思う。
’order’ => ‘ASC’
呼び出す順番。
ASCは昇順、DESC は 降順。
$categories=get_categories($args);
カテゴリーを呼び出す。
基本的な使い方は↓
<?php
$categories=get_categories();
?>
<?php foreach($categories as $category) { ?>
カテゴリーの収得を繰り返す。
$category->count
カテゴリーの記事数を収得する。
<?php the_permalink(); ?>
パーマリンクの収得。
thumbnail
アイキャッチ画像
<?php the_title(); ?>
記事などのタイトル。
<?php the_author_posts_link(); ?>
ユーザーネーム?
<?php the_date(‘Y年m月d日’); ?>
公開日。
<?php the_excerpt(); ?>
現在の投稿の抜粋を、文末に [...](角括弧+三点リーダー)をつけて表示。
HTMLや画像は表示しない。
<?php the_tags(‘Tags: ‘, ‘, ‘, ‘ ‘); ?>
現在の記事に付けられたタグを表示。
各タグは、そのタグのアーカイブページへリンクする。
*参考リンク:テンプレートタグ/the tags
<?php edit_post_link(‘Edit’, ‘[ ', ' ]‘); ?>
?
課題
どうも、アイキャッチ画像とかあまり必要の無い要素もありそうな感じ。
また、参考サイトでは本来の固定ページテンプレートに直接上のコードを書き込んでいるようだ。
でも、固定ページテンプレートに直接書き込むと、ほかの用途に固定ページテンプレートが使えない。
ここは、オリジナル固定ページテンプレートを新しく作ってコードを入れてみよう。
ということで固定ページテンプレートを複製して、上の記述を入れてみたもののどうもうまく表示されない。
テーマとの相性の問題かな。
もひとつ参考になりそうなカテゴリー別全記事一覧のサイトを見つけた
カテゴリー別全記事一覧のコードを公開しているサイトを見つけた。
こちらのサイトのコードはそれなりに表示される。
ただし、表示設定で指定した記事分しか表示されないようだ。
ということで、今度はこちらのサイトさんのコードで悪戦苦闘してみようと思う。
コメント