サポート » 使い方全般 » 年別アーカイブページでカレント年で条件分岐する方法

  • 解決済 amachang

    (@amachang)


    こんばんは。
    カレント年で条件分岐する方法をご教示頂きたく投稿します。

    年別の一覧ページをarchive.phpで作成しています。

    年毎のリンクを入れたいため、ネットで調べて以下のコードで取得しています。
    これでうまく取得できました。

    <div class="news-lists-year">
    <?php // 年別アーカイブリストを表示
    $year=NULL; // 年の初期化
    $args = array( // クエリの作成
    'orderby' => 'date', // 日付順で表示
    'posts_per_page' => -1 // すべての投稿を表示
    );
    $the_query = new WP_Query($args); if($the_query->have_posts()){ // 投稿があれば表示
    echo '<ul id="ynav" class="clearfix">';
    while ($the_query->have_posts()): $the_query->the_post(); // ループの開始
    if ($year != get_the_date('Y')){ // 同じ年でなければ表示
    $year = get_the_date('Y'); // 年の取得
    echo '<li><a href="'.home_url( '/', 'https' ).''.$year.'/">'.$year.'</a></li>'; // 年別アーカイブリストの表示
    }
    endwhile; // ループの終了
    echo '</ul>';
    wp_reset_postdata(); // クエリのリセット
    }
    ?>	
    </div>

    さらにカレント年によってスタイルを調整したいので、出力されたliタグかaタグにclassを入れたいのですが、カレント年の条件分岐の仕方が分かっておりません。

    どなたかご教示頂ければ幸いです。
    よろしくお願いいたします。

    • このトピックはamachangが4年、 2ヶ月前に変更しました。
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • こんにちは

    ループの外で、
    get_the_date( 'Y' );
    または
    get_query_var( 'year' );
    で、年(または年月)別アーカイブページの年を取得することができます。

    例:

    <?php
    
    $current_year = get_the_date( 'Y' ); // カレント年を取得
    
    echo '<ul id="ynav" class="clearfix">';
    $order = 'DESC';
    $results = $wpdb->get_results( "SELECT YEAR(post_date) AS year FROM {$wpdb->posts} WHERE post_type='post' AND post_status='publish' GROUP BY YEAR(post_date) ORDER BY post_date {$order}" );
    foreach ( (array) $results as $result ) {
    	$url = get_year_link( $result->year );
    	$class = ( $result->year == $current_year ) ? ' class="current-year"' : '';
    	echo '<li' . $class .'><a href="' . $url . '">' . $result->year . '</a></li>';
    }
    echo '</ul>';
    ?>
    トピック投稿者 amachang

    (@amachang)

    ishitaka様

    丁寧なご回答誠にありがとうございます。
    おかげさまで解決しました!

    感謝いたします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「年別アーカイブページでカレント年で条件分岐する方法」には新たに返信することはできません。