web-dev-qa-db-ja.com

Sidebar.phpのカテゴリ固有の月リスト

どうやって髪の毛を引き離しているのか、カテゴリ別の月リストを出力する方法。私は同じ問題を探していて、解決策はこれまでのところ幸運を見つけることができません...

とにかく、私のWebサイトにはPOSTタイプのページが2つあります。 1つはNEWSページ(例:http://example.com/news/)、もう1つはBLOGページ(例:http://example.com/blog/)です。

私はarchive.phpを使用して私のNEWSおよびBLOGページを表示し、sidebar.php内の投稿数と共に月リストを出力したい場所を指定します。私はwp_get_archives('cat=0')を使ってリストを出力することができました、しかしこれはこのように出力します

2013/05(20)
2013/06(12)
2013/07(18)
2013/08(6)

HTML:

<li><a href="http://xxxxxxxx.com/wp/2013/05/"></a></li>
<li><a href="http://xxxxxxxx.com/wp/2013/06/"></a></li>
<li><a href="http://xxxxxxxx.com/wp/2013/07/"></a></li>
<li><a href="http://xxxxxxxx.com/wp/2013/08/"></a></li>

これらのいずれかをクリックすると、もちろんその特定の月にすべての投稿が行われたページに移動します。

たとえば、NEWSページにいる場合に出力したいものは、次のとおりです。

HTML:

<li><a href="http://xxxxxxxx.com/wp/news/2013/05/"></a></li>
<li><a href="http://xxxxxxxx.com/wp/news/2013/06/"></a></li>
<li><a href="http://xxxxxxxx.com/wp/news/2013/07/"></a></li>
<li><a href="http://xxxxxxxx.com/wp/news/2013/08/"></a></li>

カテゴリ固有。何か案が?

3
norixxx

カテゴリ別にアーカイブを取得するためにgetarchives_whereフィルタを使うことができます

add_filter( 'getarchives_where', 'my_archives_filter_function', 10, 2 );

// your filter function replace YOUR CATEGORY ID with category term id e.g(3)
function my_archives_filter_function($where) {
   global $wpdb;
   $where ." AND $wpdb->posts.ID IN (SELECT $wpdb->posts.ID FROM $wpdb->posts INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) WHERE $wpdb->term_taxonomy.taxonomy = 'category' AND $wpdb->term_taxonomy.term_id = 'YOUR CATEGORY ID')";
   return $where;
}

wp_get_archives();を呼び出します

1
Anjum