はじめに
WordPressのカレンダーブロックで日付をクリックしたとき、すぐに記事が読めず、抜粋しか表示されないのは不便です。特に読者がカレンダーから直接アクセスした場合、記事の全文をすぐに読めるようにしたいものです。
この記事では、WordPressのGeneratePressテーマを使用して、特定の日付形式のアーカイブページ(例:/2025/04/10/のようなURL)だけに記事の全文を表示させる方法をご紹介します。
子テーマの準備
まず、GeneratePressの子テーマを用意します。子テーマとは、親テーマの機能を引き継ぎながら、一部の機能だけを変更できる仕組みです。親テーマを直接編集すると、テーマのアップデート時に変更点が消えてしまうため、子テーマを使うのがおすすめです。
すでに子テーマを使っているとのことですので、次のステップに進みましょう。
テンプレートファイルの編集方法
特定の日付形式のページだけに全文表示を設定するには、以下の手順で行います。
1. テンプレートファイルをコピーする
親テーマから必要なテンプレートファイル(多くの場合はcontent.phpまたはarchive.php)を子テーマにコピーします。これらのファイルは通常、wp-content/themes/generatepress/にあります。
コピーしたファイルは、子テーマのフォルダ(wp-content/themes/子テーマ名/)に配置します。
2. 条件分岐を追加する
コピーしたテンプレートファイルに、日付アーカイブページかどうかを判定する条件分岐を追加します。
例えば、content.php内で記事の表示部分を探し、以下のように編集します:
<?php
if (is_date()) { // 日付アーカイブページの場合
the_content(); // 記事全文を表示
} else {
the_excerpt(); // それ以外のページでは抜粋を表示
}
?>
Code language: HTML, XML (xml)
この条件分岐により、日付形式のURL(例:/2025/04/10/)にアクセスしたときだけ記事が全文表示され、それ以外のページでは通常通り抜粋が表示されます。
はGeneratePressのcontent.phpファイルを見ると、日付アーカイブページでの全文表示を設定するには以下の部分を編集する必要があります:
if ( generate_show_excerpt() ) :
?>
<div class="entry-summary"<?php echo $itemprop; // phpcs:ignore -- No escaping needed. ?>>
<?php the_excerpt(); ?>
</div>
<?php else : ?>
<div class="entry-content"<?php echo $itemprop; // phpcs:ignore -- No escaping needed. ?>>
<?php
the_content();
wp_link_pages(
array(
'before' => '<div class="page-links">' . __( 'Pages:', 'generatepress' ),
'after' => '</div>',
)
);
?>
</div>
<?php
endif;
Code language: JavaScript (javascript)
この部分を以下のように変更することで、日付アーカイブページでは全文表示、それ以外のページでは通常通りの表示(設定に応じた抜粋または全文)にできます:
if ( is_date() ) : // 日付アーカイブページの場合
?>
<div class="entry-content"<?php echo $itemprop; // phpcs:ignore -- No escaping needed. ?>>
<?php
the_content();
wp_link_pages(
array(
'before' => '<div class="page-links">' . __( 'Pages:', 'generatepress' ),
'after' => '</div>',
)
);
?>
</div>
<?php elseif ( generate_show_excerpt() ) : // 通常の抜粋表示設定の場合
?>
<div class="entry-summary"<?php echo $itemprop; // phpcs:ignore -- No escaping needed. ?>>
<?php the_excerpt(); ?>
</div>
<?php else : // 通常の全文表示設定の場合
?>
<div class="entry-content"<?php echo $itemprop; // phpcs:ignore -- No escaping needed. ?>>
<?php
the_content();
wp_link_pages(
array(
'before' => '<div class="page-links">' . __( 'Pages:', 'generatepress' ),
'after' => '</div>',
)
);
?>
</div>
<?php
endif;
Code language: JavaScript (javascript)
この修正により、日付アーカイブページでは常に全文が表示され、その他のページではテーマ設定(generate_show_excerpt()の結果)に応じて抜粋または全文が表示されます。
日付アーカイブページの判定について
WordPressには、特定のページタイプを判定するための関数がいくつか用意されています。今回使用するis_date()は、年別・月別・日別のアーカイブページであるかを判定します。
これにより、/2025/04/10/ のような日付形式のURLにアクセスしたときのみ条件が成立し、全文表示の設定が適用されます。カレンダーブロックから日付をクリックした場合、まさにこの形式のURLにアクセスするため、読者はすぐに記事の全文を読むことができます。
まとめ・動作確認とレイアウト調整
設定を変更したら、実際に該当するURLにアクセスして、記事が全文表示されるか確認しましょう。また、他のページでは通常通り抜粋表示されるかも確認してください。
記事の全文表示に伴い、レイアウトが崩れる場合は、CSSを調整して見た目を整えることも大切です。子テーマのstyle.cssファイルに必要なスタイルを追加しましょう。
GeneratePressテーマで特定の日付アーカイブページだけに記事の全文を表示するには、子テーマのテンプレートファイルに条件分岐を追加するのが効果的です。is_date()関数を使って日付アーカイブページを判定し、条件に合致した場合のみ全文表示の設定を適用します。
この設定により、カレンダーブロックから日付をクリックした読者は、余計なクリックなしでその日の記事をすぐに読むことができるようになります。