サポート » 使い方全般 » 「年」→「年度」に変更とArchives for a categoryとの連携

  • 以前、「特定カテゴリの「年度別」アーカイブ」という投稿で以下の解決策を頂きました。

    function query_for_fiscal_year( $where ) {
      global $wpdb, $wp_query, $fiscal_year;
      if ( is_year() && is_category()) {
        $fiscal_year = (int)$wp_query->query_vars['year'];
        $cat = $wp_query->query_vars['cat'];
        $next_year = $fiscal_year + 1;
        $where = "
          AND ( ( YEAR($wpdb->posts.post_date) = '$fiscal_year'
            AND  MONTH($wpdb->posts.post_date) BETWEEN '4' AND '12' )
          OR ( YEAR($wpdb->posts.post_date) = '$next_year' AND
            MONTH($wpdb->posts.post_date) BETWEEN '1' AND '3') )
          AND $wpdb->posts.post_type = 'post'
          AND ($wpdb->posts.post_status = 'publish' OR $wpdb->posts.post_status = 'private')";
    
        $where .= " AND $wpdb->term_taxonomy.taxonomy = 'category' "
          . " AND $wpdb->term_taxonomy.term_id IN ($cat) ";
      }
      return $where;
    }
    
    function my_join( $join ) {
      global $wpdb;
      if( is_year() && is_category() ) {
        $join = "
          INNER JOIN $wpdb->term_relationships
            ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id)
          INNER JOIN $wpdb->term_taxonomy
            ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) ";
      }
      return $join;
    }
    
    add_action( 'posts_where', 'query_for_fiscal_year' );
    add_action( 'posts_join', 'my_join' );

    とfunctions.phpに記載し、「年」くくりを「年度」くくりに変更することができました。
    ですが、Archives for a categoryとの連携でうまくいきません。

    例えば、
    「カテゴリID 1」の「2010年3月1日」という記事は
    「http://www.example.com/date/2009?cat=1」というアーカイブページに表示されるのですが、
    「wp_get_archives」で表示される年度リストでは「2010年」の記事と判断されてしまいます。
    (http://www.example.com/date/2010?cat=1ページには記事は表示されません)

    「function wp_get_archives」にも
    上記の「function query_for_fiscal_year」内の
    「年」→「年度」に変更する記述が必要なのでしょうか?

    お力をお借りしたく投稿させていただきました。
    よろしくお願いいたします。

  • トピック「「年」→「年度」に変更とArchives for a categoryとの連携」には新たに返信することはできません。