web-dev-qa-db-ja.com

特定のカテゴリのwp_get_archives?

私はこれに私の髪を引っ張ってきました - 私はテンプレートに特定のカテゴリのためにwp_get_archives()でハードコードする必要があります。

この記事は役に立ちました:

カテゴリー別アーカイブ

しかし、これまでに見つけたすべてのプラグインと同様に、WP 3.1では機能しません(または、明らかにしたくないコアファイルをハックする必要がある)。

私が知らない他の解決策はありますか?別のループを作成してメソッドを作成するのでしょうか。

あらゆるポインタに感謝します

おす

3
Osu

カスタムクエリを使用して、これを比較的複雑な方法で行いました。私はSmart Archives Reloadedについて知らなかったので、自分でコードを書きました。しかしそれはうまくいきます。カテゴリIDを "term_taxonomy.term_id"に置き換えてください。

<?php
                     global $wpdb, $wp_locale;
                    $query = "select YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, count(ID) as posts from $wpdb->posts,  $wpdb->term_taxonomy, $wpdb->term_relationships 
                        WHERE $wpdb->posts.post_status = 'publish' 
                        AND $wpdb->posts.post_type = 'post'
                        AND $wpdb->term_taxonomy.term_id = 11
                        AND $wpdb->posts.ID = $wpdb->term_relationships.object_id
                        AND $wpdb->term_taxonomy.term_taxonomy_id = $wpdb->term_relationships.term_taxonomy_id
                     GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC"; 
                     $arcresults = $wpdb->get_results($query); 
                    foreach ($arcresults as $arcresult): 
                    $text = sprintf(__('%1$s %2$d'), $wp_locale->get_month($arcresult->month), $arcresult->year);?>
                    <li><a href="<?php bloginfo('url') ?>/[your_category_base]/[your_category_name]/date/<?php echo $arcresult->year; ?>/<?php echo str_pad($arcresult->month, 2, '0', STR_PAD_LEFT); ?>"><?php echo $text;  ?> </li>
                      <?php endforeach; ?> 

これを書いて私は http://core.trac.wordpress.org/browser/tags/3.2.1/wp-includes/general-template.php を見て助けられました - ここでwp_get_archivesは定義されます。

そしてここにあるコード(functions.phpに入れる)を使いました: http://snipplr.com/view.php?codeview&id = 17432 の形式でアーカイブのパーマリンクを作成するには http:/ /example.com/category_base/category_name/date/YYYY/MM

2
danielwiener

Scribuの Smart Archives Reloadedプラグイン を見ると、年月ごとにまとめられた投稿のリストを表示できます。

アーカイブをカテゴリ別に制限するのは、これと同じくらい簡単です。

smart_archives( '', 'category_name=category_name' ); 
1
Bainternet

おそらくquery_postsを使ってクエリを生成してからカスタムループを使ってください。

http://codex.wordpress.org/Function_Reference/query_posts

0
matpol