私はこれに私の髪を引っ張ってきました - 私はテンプレートに特定のカテゴリのためにwp_get_archives()
でハードコードする必要があります。
この記事は役に立ちました:
しかし、これまでに見つけたすべてのプラグインと同様に、WP 3.1では機能しません(または、明らかにしたくないコアファイルをハックする必要がある)。
私が知らない他の解決策はありますか?別のループを作成してメソッドを作成するのでしょうか。
あらゆるポインタに感謝します
おす
カスタムクエリを使用して、これを比較的複雑な方法で行いました。私は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
Scribuの Smart Archives Reloadedプラグイン を見ると、年月ごとにまとめられた投稿のリストを表示できます。
アーカイブをカテゴリ別に制限するのは、これと同じくらい簡単です。
smart_archives( '', 'category_name=category_name' );
おそらくquery_postsを使ってクエリを生成してからカスタムループを使ってください。