サポート » 使い方全般 » カスタム分類の月別アーカイブリストの表示について

  • 解決済 fone

    (@fone)


    カスタム分類の月別アーカイブリストについて質問させてください。

    カスタム分類内だけの月別アーカイブリストを作りたいと思っています。


    ・2010年3月
    ・2010年2月
    ・2010年1月

    上記のような表示でリスト形式にしたいのですが wp_get_archives() を使うと全ての投稿の月別アーカイブリストが表示されてしまいます。

    wp_get_archives() はデフォルトではカテゴリの指定もできないので、普段はArchives for a categoryというプラグインを使用させていただいて、カテゴリ別のアーカイブを作っていたのですが、このプラグイン内のデータベースにアクセスして”category”が入っているところを取得、という箇所を該当のカスタム分類の名前(タクソノミー名)に変更してみたりと色々とやってみたのですが、うまくいきませんでした。

    どなたかカスタム分類のみのアーカイブの取得に成功された方はいらっしゃいませんでしょうか?解決策をご教授ください、よろしくお願いします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • kz

    (@kz)

    テーマの functions.php に以下を追加して、

    add_filter( 'getarchives_join', 'my_getarchives_join', 10, 2 );
    function my_getarchives_join( $join, $r ) {
      global $wpdb;
    
      if ( isset( $r['taxonomy'] ) ) {
        $join .= " LEFT JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) ";
        $join .= " LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) ";
      }
      return $join;
    }
    add_filter( 'getarchives_where', 'my_getarchives_where', 10, 2 );
    function my_getarchives_where( $where, $r ) {
      global $wpdb;
    
      if ( isset( $r['taxonomy'] ) ) {
        $where .= $wpdb->prepare( " AND $wpdb->term_taxonomy.taxonomy = %s ", $r['taxonomy'] );
      }
      return $where;
    }

    wp_get_archives( 'taxonomy=my_taxonomy' ); のようにカスタム分類を指定すれば OK。

    トピック投稿者 fone

    (@fone)

    ご回答ありがとうございました。

    ご教授いただいた方法を参考に制作することができました。
    ありがとうございました。

    解決済みとなっている記事ですが、
    どうしても実装できなかったので質問させていただきました。

    functions.phpにコードとの追加意外に、
    カスタム投稿の設定(「Has Archive」など)や
    archive.phpに何か変更が必要なのでしょうか。

    wp_get_archives() が出力するURLが以下のようになっています。
    http://purasenta-info.jp/date/2011/05/

    大変申し訳ないのですが、
    どなたかご教授いただけますでしょうか。

    どうぞ宜しくお願いいたします。

    解決済みとなっている記事ですが、

    と、わかっているなら尚更、ルール違反したんではわかる人も回答してはくれませんよ。

    新しくトピックを立ててください。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「カスタム分類の月別アーカイブリストの表示について」には新たに返信することはできません。