Written by Anonymous

add_shortcode('month_archive_dropdown', function() {
  global $wpdb;

  // 過去の投稿から年月データを取得
  $results = $wpdb->get_results("
    SELECT DISTINCT YEAR(post_date) AS year, MONTH(post_date) AS month
    FROM {$wpdb->posts}
    WHERE post_status = 'publish'
    AND post_type = 'post'
    ORDER BY post_date DESC
  ");

  if (empty($results)) {
    return '<p>アーカイブがありません。</p>';
  }

  // ドロップダウンHTML生成
  $html  = '<form action="" method="get" id="month-archive-dropdown">';
  $html .= '<select name="archive-dropdown" onchange="if(this.value) window.location.href=this.value;">';
  $html .= '<option value="">年月を選択してください</option>';

  foreach ($results as $result) {
    $year  = $result->year;
    $month = $result->month;

    // 年月の最初の投稿を取得
    $query = new WP_Query([
      'year'           => $year,
      'monthnum'       => $month,
      'posts_per_page' => 1,
      'orderby'        => 'date',
      'order'          => 'DESC',
    ]);

    if ($query->have_posts()) {
      $query->the_post();
      $first_post_url = get_permalink(); // 最初の投稿のURL

      $month_label = date_i18n('Y年 F', strtotime("$year-$month-01"));

      $html .= sprintf(
        '<option value="%s">%s</option>',
        esc_url($first_post_url),
        esc_html($month_label)
      );
    }

    wp_reset_postdata();
  }

  $html .= '</select>';
  $html .= '</form>';

  return $html;
});
Notepad
Auto link Select All