get_calendar()

get_calendar()
目次

get_calendar()の用途

get_calendar() は、WordPress の標準テンプレートタグのひとつで、月別の投稿カレンダーを HTML テーブル形式で出力する関数です。

例えば、ブログのサイドバーに「2025年6月」のようなカレンダーを表示し、投稿がある日付にはリンクが張られる…といった表示が可能です。

get_calendar()の基本構文

get_calendar( string $initial = true, bool $echo = true )

get_calendar()のパラメータ

パラメータデフォルト説明
$initialstring/booltrue曜日の表示を省略形(例:月、火…)にするか。false にすると「月曜日」「火曜日」のように全表示。
$echobooltrue画面に出力(true)するか、文字列として返す(false)か。

出力される内容(HTML構造)

基本的には以下のようなHTMLテーブルが出力されます:

<table id="wp-calendar">
  <caption>2025年6月</caption>
  <thead>
    <tr>
      <th scope="col">日</th>
      <th scope="col">月</th>
      ...
    </tr>
  </thead>
  <tbody>
    <tr>
      <td> </td>
      <td><a href="/2025/06/02/">2</a></td>
      ...
    </tr>
  </tbody>
</table>

get_calendar()のカスタマイズしたい場合の方法

get_calendar() は出力HTMLがある程度固定されているため、HTML構造を自由に変更することは困難です。ただし、CSSでのスタイリングフィルターフック による一部カスタマイズは可能です。

投稿がある日だけリンクが張られる

  • 各日付にリンクがあるのは、その日に公開された投稿が存在する日のみです。
  • get_calendar() は自動的に wp_posts テーブルをクエリし、該当日の投稿数をチェックします。

get_calendar()の使用例(ウィジェットやテンプレート)

サイドバーなどで使う

<?php get_calendar(); ?>

フッターなどにリンクなしのカレンダーを取得(変数で受け取る)

$calendar = get_calendar(true, false);
echo '<div class="calendar-box">' . $calendar . '</div>';

get_calendar()のカスタマイズ

フィルター(代表的なもの)

フィルター名概要
get_calendarカレンダー全体の HTML 出力にフィルター
get_calendar_month_url月リンクの URL をカスタマイズ可能
get_calendar_post_typeカレンダーに反映させる投稿タイプを変更可能(デフォルトは post

例:カスタム投稿タイプに対応させる

add_filter( 'get_calendar_post_type', function( $post_type ) {
    return 'news'; // 例:news というカスタム投稿タイプ
});

内部で使われている主な関数

関数名説明
calendar_week_mod()週の開始曜日に合わせて曜日インデックスを調整
get_option( 'start_of_week' )WordPress管理画面の「週の始まり」設定を取得
get_month_link()各月のリンクを生成
get_day_link()各日のリンクを生成

get_calendar()の注意点

項目内容
カスタム投稿タイプデフォルトでは非対応(要フィルター追加)
カスタムHTML構造変更しにくい。見た目のカスタマイズはCSS推奨
曜日順の変更start_of_week 設定と calendar_week_mod() に依存

get_calendar()のまとめ

項目内容
関数名get_calendar()
主な用途投稿のある日をリンク付きで月表示するカレンダー
カスタマイズ性HTMLは固定/スタイルはCSSで対応/投稿タイプはフィルターで対応
適した場所サイドバー、ウィジェット、フッターなど

もし「自作で柔軟なカレンダーを作りたい」「投稿内容に応じてカレンダーの表示を変えたい」といった要望があれば、get_calendar() を使わずに、独自ロジック+ get_posts() などでカレンダーを組む方法もご紹介可能です。必要に応じてお知らせください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

初めてホームページを作成したのは1996年。
2000年よりフリーランスで主に中小企業、学校、各種公的団体、個人事業主のWordPressを活用したホームページ制作を行っています。WordPressテーマはそれぞれのクライアントに合わせて作成しています。
WordPressを活用したサイト運営のための情報発信をしていきます。

目次