サポート » 使い方全般 » wp_get_archivesで年別と月別アーカイブを表示したいです。

  • 解決済 aki_

    (@aki_)


    投稿記事のアーカイブへのリンクについてお教えください。

    <ul>
    <?php wp_get_archives('limit=12'); ?>
    </ul>
    
    <ul>
    <?php wp_get_archives('type=yearly'); ?>
    </ul>

    と単純に指定すると、
    ■2009年3月
    から
    ■2008年3月
    までのリンクと、
    ■2009年
    ■2008年
    ■2007年
    といった単純な年別アーカイブの表示がされますが、これを

    ■2009年3月
    ■2009年2月
    ■2009年1月
    
    ■2008年1-12月
    ■2007年1-12月

    といった形のリンク表示をさせるようにしたいです。
    こういったプラグインをご存知の方、お教えいただけますでしょうか。
    また、wp_get_archivesではmonthlyでもyearlyでも、date.php(月別ページのテンプレート)から表示されるのですが、こちらをyearly 用のテンプレートを別にして表示させたいです。
    指定方法等お分かりのかた、ご教授いただけますでしょうか。
    よろしくお願いいたします。

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

    (@jim912)

    aki___さん、こんにちは。

    全てのwp_get_archivesの出力に影響してしまうのですが、下記コードを利用しているテーマのfunctions.phpに追加してください。

    function add_condition_archive_query( $where, $r ) {
    	if ( $r['type'] == 'yearly' ) {
    		$year = date( 'Y' );
    		$where .= " AND YEAR(post_date) != '$year'";
    	}
    	if ( $r['type'] == 'monthly' ) {
    		$year = date( 'Y' );
    		$where .= " AND YEAR(post_date) = '$year'";
    	}
    	return $where;
    }
    add_filter( 'getarchives_where', 'add_condition_archive_query', 10, 2 );

    アーカイブのリンクを出力させたい箇所に、下記のように記述いただくと(ある程度?)ご希望の形で出力されるかと思います。

    wp_get_archives(  );
    wp_get_archives( 'type=yearly&after= 年 1-12月' );

    ※ 年 1-12月の部分もリンクにするには、get_archives_linkでフックし、正規表現を用いて置換を行えばできるかもしれません。

    あと、利用するテンプレートについてですが、date.phpに

    <?php
    if ( is_year() ) {
    	include( TEMPLATEPATH . '/year.php' );
    	exit;
    }
    if ( is_month() ) {
    	include( TEMPLATEPATH . '/month.php' );
    	exit;
    }
    if ( is_day() ) {
    	include( TEMPLATEPATH . '/day.php' );
    	exit;
    }

    と記述して分岐させてみてはいかがでしょう。

    トピック投稿者 aki_

    (@aki_)

    jim912さま、こんばんは。ご返答を有り難うございました!
    「フック?」とググるレベルな私なので、 after= 年 1-12月 の付記で充分と決めました。
    また、date.php内のアーカイブ表示をyearlyとmonthlyで変えたい部分に、お教えいただいたコードを使って上手く表示させることが出来ました。
    アドバイスを有り難うございました m(_ _)m

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「wp_get_archivesで年別と月別アーカイブを表示したいです。」には新たに返信することはできません。