サイドバーの年月アーカイブからカテゴリーを絞った記事一覧をarchive.phpで出力
functions.phpにアーカイブをカテゴリで絞り込むアクションを記載
//アーカイブをカテゴリで絞り込み
function CatArchives( $query ) {
if ( is_admin() || ! $query->is_main_query() )
return;
if ( $query->is_archive() || $query->is_home() ) {
$cat_slug = (string)filter_input(INPUT_GET, 'cat_slug'); //カテゴリスラッグを取得
$cat_id = get_category_by_slug( $cat_slug ) -> cat_ID; //スラッグからカテゴリIDを取得
if ( $cat_id != 0 ) { //カテゴリIDがあれば
$query->set( 'cat', $cat_id ); //指定カテゴリで絞り込む
$query->set( 'orderby', 'date' ); //日付降順で並び替え
}
return;
}
}
add_action( 'pre_get_posts', 'CatArchives' );
上記で下記のURLができる
https://test.com/?cat_slug=news
https://test.com/2021/?cat_slug=news
https://test.com/2021/01/?cat_slug=news
サイドバーで月別および年別アーカイブ一覧+カテゴリーを出す
2023年5月
2023年4月
2023年
2022年
下記の「 ?cat_slug=news 」は絞りたいカテゴリースラッグに変更
例は スラッグ:news カテゴリーID:1
この場合、archive.phpを使う
<?php
$args = array(
'category' => 1, // カテゴリーIDが1の記事のみを取得
'posts_per_page' => -1 // すべての記事を表示
);
$posts_in_category = get_posts($args);
$archive_counts_monthly = array();
$archive_counts_yearly = array();
foreach ($posts_in_category as $post) {
setup_postdata($post);
// 月別アーカイブ
$archive_month = get_the_date('Y年n月');
$archive_month_link = get_month_link(intval(get_the_date('Y')), intval(get_the_date('n')));
if (!isset($archive_counts_monthly[$archive_month])) {
$archive_counts_monthly[$archive_month] = $archive_month_link;
}
// 年別アーカイブ
$archive_year = get_the_date('Y年');
$archive_year_link = get_year_link(intval(get_the_date('Y')));
if (!isset($archive_counts_yearly[$archive_year])) {
$archive_counts_yearly[$archive_year] = $archive_year_link;
}
}
echo '<ul>';
foreach ($archive_counts_monthly as $archive_month => $link) {
echo '<li><a href="' . $link . '?cat_slug=news">' . $archive_month . '</a></li>';
}
echo '</ul>';
echo '<ul>';
foreach ($archive_counts_yearly as $archive_year => $link) {
echo '<li><a href="' . $link . '?cat_slug=news">' . $archive_year . '</a></li>';
}
echo '</ul>';
wp_reset_postdata();
?>
件数もついた年月アーカイブはこちら
2023年5月(4)
2023年4月(5)
2023年(9)
2022年(15)
<?php
$cat_slug = 'news'; // カテゴリースラッグ
$args = array(
'category' => 1, // カテゴリーIDが1の記事のみを取得
'posts_per_page' => -1 // すべての記事を表示
);
$posts_in_category = get_posts($args);
$archive_counts_monthly = array();
$archive_counts_yearly = array();
foreach ($posts_in_category as $post) {
setup_postdata($post);
// 月別アーカイブ
$archive_month = get_the_date('Y年n月');
$archive_month_link = get_month_link(intval(get_the_date('Y')), intval(get_the_date('n')));
if (!isset($archive_counts_monthly[$archive_month])) {
$archive_counts_monthly[$archive_month] = array(
'link' => $archive_month_link,
'count' => 1
);
} else {
$archive_counts_monthly[$archive_month]['count']++;
}
// 年別アーカイブ
$archive_year = get_the_date('Y年');
$archive_year_link = get_year_link(intval(get_the_date('Y')));
if (!isset($archive_counts_yearly[$archive_year])) {
$archive_counts_yearly[$archive_year] = array(
'link' => $archive_year_link,
'count' => 1
);
} else {
$archive_counts_yearly[$archive_year]['count']++;
}
}
echo '<h2>月別アーカイブ</h2>';
echo '<ul>';
foreach ($archive_counts_monthly as $archive_month => $data) {
echo '<li><a href="' . $data['link'] . '?cat_slug=' . $cat_slug . '">' . $archive_month . ' (' . $data['count'] . ')</a></li>';
}
echo '</ul>';
echo '<h2>年別アーカイブ</h2>';
echo '<ul>';
foreach ($archive_counts_yearly as $archive_year => $data) {
echo '<li><a href="' . $data['link'] . '?cat_slug=' . $cat_slug . '">' . $archive_year . ' (' . $data['count'] . ')</a></li>';
}
echo '</ul>';
wp_reset_postdata();
?>
HOME > wordpress設計術 > サイドバーの年月アーカイブからカテゴリーを絞った記事一覧をarchive.phpで出力
wordpress設計術
- カテゴリーをパラメーターとして使用するtag.phpを分岐
- wpカテゴリーcategory.phpとその子、孫カテゴリーページで同じ内容を出力
- WPでSNSシェアボタンを手動でつける・HTML+PHPコード
- category.phpアイキャッチ優先順位
- contactform7 Enter・returunキーで送信させない
- ACFを使用すると通常のカスタムフィールドが消えるので両方表示させる
- wpトピックパス(パンクズ)を作成2
- Yoast SEO でtitleが出ない時にチェックするところ
- wordpressの記事内にショートコードでphpテンプレートを呼び出す
- Contact Form 7でチェックボックスを設置すると見入力必須項目に「入力してください。」が出る
- wordpressカスタム投稿のsingle-カスタム.phpのページナビ(ターム分類内)
- category.php分岐カテゴリーごとにテンプレートを変える(子カテゴリー含む)
- サイドバーの年月アーカイブからカテゴリーを絞った記事一覧をcategory.phpで出力
- mw wp formでチェックボックス(1つ)にチェックを入れた時だけ表示・表示されたinputは入力必須
- wp-親テーマのcssを無効にする
- Advanced Custom Fieldsを入れると消えるカスタムフィールドを表示する方法|wordpress
- wpカスタム投稿月別アーカイブが404になる時
- お知らせ等・月ごとに記事をまとめる(jsを使えば開閉可能)サイドナビで使える
- wpカスタムフィールドに入力した投稿ページのIDの記事を呼び出すWP_Query
- ACFでカラーピッカーを使ってカテゴリーごとに色を付け、TOPページのループ内で表示。styleでbackground-colorを変える
- CPI UI taxonomy- タームテンプレートのタイトル表示
- wordpressのパンクズ(トピックパス)2024年functions.phpとテンプレートに記載
- Advanced Custom Fieldsのチェックボックス・ラジオボタンの結果にクラス名を付ける
- singleページのページ送り・通常とカスタム投稿(CPI UI)
- ブラウザ幅を判定して、特定のページをリダイレクトするjavascript
- wp固定ページとその子(一部除外)に表示
- wordpresのスラッグ名を取得
- conohaサーバー:EC-CUBE4ディレクトリと並列でwpディレクトリを作成した際のhtaccessの書き方
- 投稿記事のスラッグを自動入力
- qTranslate-XT テンプレート内で言語別に分岐させる方法
- wpカテゴリーごとに年月アーカイブを表示
- single.phpをカテゴリーごとに分岐wordpress
- wpのパンくず(トピックパス)をfunctions.phpで作成
- wordpress固定ページでループとページネーション
- wordpressの検索枠設置と条件検索
- CPIの共用レンタルサーバー「シェアードプラン ACE01」パーマリンク変更時のエラー
- Advanced Custom Fields・値によって分岐する
- 今見ている投稿記事と同カテゴリーの記事を表示
- wpログインしている時としていない時で、表示させる内容を変える
- wpセキュリティ対策まとめ
- 標準装備のカスタムフィールドでショートコードを入力して表示する【wordpress】
- functions.phpにショートコードを登録するwordpress
- single.phpに、投稿ページでチェックした特定のカテゴリーの子カテゴリーに限定して表示
- 特定のカテゴリーとその子の時に表示する
- テンプレートに固定ページの内容を読み込む
- WordPressの記事の前後のページへのリンクを自動で表示する方法(カテゴリー内・カテゴリー混合)
- wp プラグイン無しのカスタムフィールドのテンプレート出力
- the_content()の内容をmore前後で2つに分割して出力できる
- 月別アーカイブと記事一覧
- worpressのパーマリンクを変更すると403エラーになる場合
- contact form7 に前ページの情報を与える
- Advanced Custom Fieldsとslick.jsスライダー
- wordpress・ページの子ページ一覧を出力
- wpのcategory.phpで1ページ目にだけ表示する
- WP-PageNaviの2ページ目以降404を解決
- Custom Post Type UIで、特定のカテゴリー一覧を取得する方法
- WordPressで記事の最初の画像を取得してサムネイルサイズで表示する
- ループ記事を古い順に並べる【wordpress】
- Advanced Custom Fields テキストエリアの改行文字列をリストタグ(li)で囲む【wordpress】
- Advanced Custom Fields の表示【wordpress】
- Custom Post Type UIのテンプレート【wordpress】
- Custom Post Type UIカスタム投稿の表示【wordpress】
- Advanced Custom Fieldsでチェックボックスの値を表示する【wordpress】
- 自分が所属するカテゴリーをリンク無し・有りで表示【wordpress】
- 投稿記事全てのリストをpage.phpに表示【wordpress】
- wp分岐・特定の親固定ページとその子ページの時に表示