
目次
get_calendar()の用途
get_calendar()
は、WordPress の標準テンプレートタグのひとつで、月別の投稿カレンダーを HTML テーブル形式で出力する関数です。
例えば、ブログのサイドバーに「2025年6月」のようなカレンダーを表示し、投稿がある日付にはリンクが張られる…といった表示が可能です。
get_calendar()の基本構文
get_calendar( string $initial = true, bool $echo = true )
get_calendar()のパラメータ
パラメータ | 型 | デフォルト | 説明 |
---|---|---|---|
$initial | string/bool | true | 曜日の表示を省略形(例:月、火…)にするか。false にすると「月曜日」「火曜日」のように全表示。 |
$echo | bool | true | 画面に出力(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()
などでカレンダーを組む方法もご紹介可能です。必要に応じてお知らせください。