「投稿をカテゴリー別に並べたい」
「抜粋だけ表示する方法ってある?」
「the_content()以外に使えるタグって?」
今回は、WordPressテーマにおける投稿の見せ方を自由にコントロールするテクニックをご紹介。
「一覧ページを作りたい」「ループをカスタマイズしたい」と思い始めたあなたにぴったりの内容です!
今回のゴール
the_excerpt()
の使い方とカスタマイズ- カテゴリー別に投稿を表示する方法
WP_Query
を使ったカスタムループの作成
1. 抜粋(the_excerpt)の使い方
the_excerpt()
は、投稿の「抜粋」部分を表示するテンプレートタグです。
デフォルトでは、本文の最初の約55単語が出力されます。
<?php
// 抜粋を表示(管理画面で入力がなければ、冒頭の一部が自動で表示される)
the_excerpt();
?>
💡 管理画面で「抜粋」欄にテキストを入れておけば、そちらが優先表示されます。
🔍 the_excerpt()
は the_content()
と違い、基本的に HTML タグやショートコードが除去されたシンプルなテキストを出力します。
HTMLの見出しタグや画像などを含めたい場合は、the_content()
の使用も検討しましょう。
🔧 表示される文字数を変えたい!
functions.php
に以下を追加すると、文字数を変更できます:
// 抜粋の文字数を変更する(デフォルトは約55単語)
function custom_excerpt_length($length) {
return 100; // 100文字分に変更(※日本語サイトでは文字数として機能する)
}
add_filter('excerpt_length', 'custom_excerpt_length');
🔧 「…」を変更したいときは?
// 抜粋の末尾に表示される「…」部分の文言を変更
function custom_excerpt_more($more) {
return '...続きを読む'; // 好きなテキストに変更可能
}
add_filter('excerpt_more', 'custom_excerpt_more');
2. カテゴリー別に投稿を表示する(簡単ループ)
たとえば、**「お知らせ」カテゴリー(slug: news)**の投稿を一覧で出したいとき:
<?php
// 「news」カテゴリーの最新5件を取得する
$args = array(
'category_name' => 'news', // カテゴリースラッグで指定
'posts_per_page' => 5 // 表示件数
);
$news_query = new WP_Query($args);
if ($news_query->have_posts()):
while ($news_query->have_posts()): $news_query->the_post();
?>
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<p><?php the_excerpt(); ?></p>
<?php
endwhile;
// クエリの影響をリセット(メインループに戻す)
wp_reset_postdata();
endif;
?>
💡 WP_Query
を使えば、「投稿タイプ」「タグ」「日付」など、柔軟な条件指定ができます。
💡 WP_Query
では 'orderby' => 'rand'
や 'meta_query'
を使って、表示順やカスタムフィールド条件での絞り込みも可能です!
💡 カテゴリーの「スラッグ」は、管理画面の「投稿 > カテゴリー」から確認・編集できます。
3. 投稿ループをカスタマイズしよう
たとえば、カスタム投稿タイプ blog
でタグ design
の記事を3件だけ取得するには:
<?php
// カスタム投稿タイプ「blog」から、タグ「design」が付いた記事を3件取得
$args = array(
'post_type' => 'blog', // 投稿タイプを blog に指定
'tag' => 'design', // 「design」というタグのスラッグを指定(※管理画面で設定されたスラッグ名を使います)
'posts_per_page' => 3 // 表示件数
);
$blog_query = new WP_Query($args);
if ($blog_query->have_posts()):
while ($blog_query->have_posts()): $blog_query->the_post();
?>
<div class="blog-box">
<h3><?php the_title(); ?></h3>
<p><?php the_excerpt(); ?></p>
</div>
<?php
endwhile;
wp_reset_postdata(); // クエリの影響をリセット
endif;
?>
4. よくある注意点
WP_Query
を使ったら、必ずwp_reset_postdata()
を実行すること(メインクエリへの影響を防ぐ)the_content()
はHTMLタグ付き、the_excerpt()
はタグなしになるthe_excerpt()
使用時、「続きを読む」リンクを自作で付けるのが一般的です
💡 例えば、以下のようにリンクを組み合わせて表示するのが定番です:
<p>
<?php the_excerpt(); // 抜粋表示 ?>
<a href="<?php the_permalink(); ?>">続きを読む</a> <!-- 個別ページへのリンク -->
</p>
🎨 テーマデザインに合わせて、リンクにクラスを追加するのもおすすめです:
<a class="btn-more" href="<?php the_permalink(); ?>">続きを読む</a>
✅ まとめ
用途 | よく使うタグ/方法 |
---|---|
投稿本文の出力 | the_content() |
抜粋の出力 | the_excerpt() |
投稿一覧のカスタム表示 | WP_Query + while ループ |
抜粋文字数の変更 | excerpt_length フィルター |
「続きを読む」のテキスト変更 | excerpt_more フィルター |
💡 抜粋はデザイン性を損なわず一覧を整えるのに便利です。投稿の雰囲気を伝える“要約”として積極的に活用しましょう。
🔍 さらに深掘りしたい人向け
pre_get_posts
を使えば、既存の投稿一覧をカスタマイズ可能query_posts()
は基本的に使わない!(ページネーションが壊れるので注意)
⚠️ query_posts() はメインのクエリを上書きしてしまうため、ページネーションやテンプレートの動作が正しく行われなくなるケースが多く、非推奨です。
📝 次回予告:「固定ページのテンプレートを作ろう」
次回は、「会社概要」や「お問い合わせ」などの固定ページに専用テンプレートを割り当てる方法を解説します!
会社概要・サービス紹介・アクセスページなど、情報固定型のページに最適です。