【WordPress】記事一覧で年別タイトルをつける
2021年
01.01 記事タイトル
08.02 記事タイトル
10.20 記事タイトル
2020年
01.05 記事タイトル
07.15 記事タイトル
11.31 記事タイトル
…
みたいな記事一覧を年のタイトルで区切りたいときに使うもの。
関数を作る
<?php
function yearArchive($year)
{
$newslist = new WP_Query(array(
'post_type' => 'post',
'posts_per_page' => -1,
'year' => $year
));
if ($newslist->have_posts()) :
?>
<div class="list">
<h2><?php echo $year; ?>年</h2>
<?php while ($newslist->have_posts()) :
$newslist->the_post();
?>
<?php
$cat = get_the_category();
$cat = $cat[0];
$slug = $cat->slug;
?>
<dl class="<?php echo $slug; ?>">
<dt><?php echo get_post_time('Y.m.d'); ?></dt>
<dd>
<a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
</dd>
</dl>
<?php endwhile; ?>
</div>
<?php endif;
wp_reset_postdata();
?>
<?php
}
$thisyear = date('Y');
for ($year = $thisyear; $year >= 2010; $year--) {
yearArchive($year);
}
?>| function 〇〇($arg_1, $arg_2,…) { } | (PHP)ユーザー定義関数。関数を作る。 |
| WP_Query() | サブループを作り、投稿を取得する。 |
| for (式1; 式2; 式3) { } | (PHP)式1:ループ開始時に実行 式2:各繰り返しの開始時に実行 式3:各繰り返しの後に実行 |
| $a – – | (PHP)後置減算子。 $a を返し、$a から 1 を引く。 ※PHP は C 言語の加算子/減算子と同じ |
ほぼ参考サイトのコピペなのですが、ユーザー定義関数とPHPについてめちゃめちゃ理解が深まりました。便利…ありがとうございます…
(追記)関数を作らない場合
いろんな場所で使い回す必要がないのであれば、関数を作らずに下記を任意の場所に書いても表示できます。
for文の「$year >= 2021」の部分を開始したい年に設定すればOK。
<?php
$thisyear = date('Y');
for ($year = $thisyear; $year >= 2021; $year--) {
$newslist = new WP_Query(array(
'post_type' => 'post',
'posts_per_page' => -1,
'year' => $year
));
if ($newslist->have_posts()) :
?>
<li>
<h3><?php echo $year; ?>年</h3>
<ul class="month">
<?php while ($newslist->have_posts()) :
$newslist->the_post();
?>
<li>
<h4>
<a href="<?php the_permalink() ?>">
<?php the_title(); ?></a>
</h4>
</li>
<?php endwhile; ?>
</ul>
</li>
<?php endif;
wp_reset_postdata();
} ?>(追記2)wp_get_archives関数を使う場合
年別アーカイブを生成したくてwp_get_archivesを使っている時に「これでもいけるのでは…?」と思ったので調べてみると、この関数で月別アーカイブを年別にまとめている方がいらっしゃいました(→ https://cosybench.com/customize-wp-archives-look/)。
生成したアーカイブリンクひとつひとつをPHPの配列として操作しているようです。
結果ちょっと複雑になるかな〜思いましたが、よりカスタマイズしたい場合はこちらも良さそうです。
参考
- WordPressのアーカイブページで投稿を年度別に一覧表示したかった。 – やってみたら、できた。
https://www.narugaro.com/web/wordpress%E3%81%AE%E3%82%A2%E3%83%BC%E3%8... - 年別?アーカイブの表示方法について | WordPress.org 日本語
https://ja.wordpress.org/support/topic/%e5%b9%b4%e5%88%a5%ef%bc%9f%e3%... - 年別?アーカイブの表示方法について | WordPress.org 日本語
https://wemo.tech/160 - PHP: ユーザー定義関数 - Manual
https://www.php.net/manual/ja/functions.user-defined.php - PHP: for - Manual
https://www.php.net/manual/ja/control-structures.for.php - PHP: for - Manual
https://cosybench.com/customize-wp-archives-look/
関連記事
-
WordPress 設定
【WordPress】function.phpの基本設定
-
WordPress
【WordPress】テンプレート階層
-
TIPS WordPress
404ページを設定する
-
WordPress プラグイン
【WordPress】フロントでIntuitive Custom Post Orderの並び替えが効かないとき
-
WordPress プラグイン
【WordPressプラグイン】Advanced Custom Fieldsの出力
-
WordPress 関数の使い方
【WordPress】ページネーションを作る
-
WordPress
静的サイトに一部WordPressを導入する
-
WordPress
【WordPress】カスタムタクソノミーの出力あれこれ