2009-06-18 7 views
7

私は、ページに6つのリストがあり、それぞれのリストは異なるカテゴリの投稿を表示しているWordPressサイトを作ろうとしています。シンプル。WordPress - タグでフィルタリングされた投稿のリストを作成してからカテゴリを作成する

しかし、ユーザーがタグを選択してそのタグアーカイブページに移動しても、6リストテンプレートが表示されますが、各カテゴリ内のすべての投稿もタグでフィルタリングされます。したがって、投稿のリストは最初にタグで、次にカテゴリごとにフィルタリングされます。

私が知る限り、query_postsなどを使用してこれを行う方法はありません。データベースの高度な使用が必要ですが、これを行う方法はわかりません。私はここにも同様の質問があると思いますが、私はPHPとMySQLがほとんど分かっていないので、答えを理解できません!

答えて

5

右は、私は最終的にこれに比較的簡単な解決策を発見しました。

WordPressにカテゴリとタグの両方のクエリが機能しないというバグがあります。だから、は動作しませんが、これは魔法のように動作するquery_posts('cat=2&tag=bread+tag=bread');です。 tag.phpテンプレートで

が、私はそれがそのアーカイブからタグをピックアップしてみたかったので、私はこれをしなければならなかった:

<?php query_posts('cat=12&tag='.$_GET['tag'].'+'.$_GET['tag']); ?> 

完璧に動作しています。

0

the Wordpress APIによれば、query_postsの呼び出しでタグでフィルタリングできます。

例:

query_posts('tag=cooking'); 

query_posts('tag=bread,baking'); 

query_posts('tag=bread+baking+recipe'); 
+0

残念ながら、このクエリはカテゴリを上書きし、タグ内でカテゴリ別にフィルタリングすることはできません。そのカテゴリのすべての投稿とそのタグ内のすべての投稿のみが表示されます。 –

+0

最初にget_queryを呼び出して、タグでフィルタリングされた投稿の配列を取得できます。次に、それを反復処理して、手動で6つのカテゴリのそれぞれの配列に投稿を割り当てます。 –

+0

これは完璧なもののように聞こえるが、私はPHPerではないので、どうやってやるのか分からない! –

2

は、このコードを試してみてください。

query_posts('tag=selected_tag'); 

while (have_posts()) : the_post(); 


    foreach((get_the_category()) as $category) 
     { 

     if ($category->cat_name == 'selected_category') 
      { 
      // output any needed post info, for example: 
      echo the_title(); 
      } 

     } 


endwhile; 
+0

何もエラーも何も表示されず、何も表示されません:S –

+0

'selected_tag'と 'selected_category'を自分の値で置き換えましたか? 8) このコードをWordPressのテンプレートに置き、ページごとに6つ作成すると便利です。 – Wiseman

+0

私はこれらのことを両方行いました:) –