サポート » 使い方全般 » 年度別アーカイブで記事が無いのにリストが出てしまう

  • 現在、2012年4月~12月・2013年1~3月の記事は、2012年度の記事一覧に表示しています。
    それは良いのですが、
    2013年1~3月に記事があると、なぜか2013年度のリンクが表示され、
    クリックすると空のページが表示されてしまいます。

    下記の様に年度別で記事を表示させているのですが、
    原因がさっぱり分かりません。。
    ご教授頂けると非常に助かります。

    よろしくお願いします。

    ■category.php

    <ul class="yearly">
    <?php wp_get_archives('type=yearly&cat=9&after=年度'); ?>
    </ul>

    ■function.php

    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' );

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    functions.php に記述されたのは、実際にページを表示する際に記事の抽出条件を変更するためのものです。
    wp_get_archives のリストを作る条件には適用されないため、1月から3月までに記事が存在した場合、4月から次年度の3月まで記事が存在しない場合でも、記事があると判断されリンクが表示されてしまいます。もちろん、この逆のパターン(本来、表示すべき記事はあるのにリストに表示がなされない)もあり得ます。

    トピック投稿者 モグラ

    (@tenpra)

    jim912さん

    返信ありがとうございます。
    そうすると、functions.phpに1月から3月までに記事が存在した場合、
    リンクを表示させないような記述が必要という事でしょうか?

    本当にすみませんphpの知識が浅いため、
    どのように記述すればいいか教えて頂いても良いでしょうか? 汗

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「年度別アーカイブで記事が無いのにリストが出てしまう」には新たに返信することはできません。