2011-03-13 10 views
0

私は 'sector'というタクソノミを共有する 'project'と 'client'という2つのカスタムポストタイプを持っています。1つのカスタムポストタイプからwp_list_categoriesフィルタ

if (!is_taxonomy('sector')) { 
     register_taxonomy(
     'sector', array('project', 'client'), array(
     'hierarchical' => true, 
     'label' => 'Sector', 
     'query_var' => true, 
     'rewrite' => array('slug' => 'sector'), 
     'with_front' => false 
     )); 

     wp_insert_term('Health', 'sector'); 
     wp_insert_term('Clubs', 'sector'); 
     wp_insert_term('Commercial', 'sector');  
    } 

私が使用して私の分類のアーカイブへのリンクを一覧表示し、サイドバーのナビゲーションと分類アーカイブテンプレートを作成しました:

//list terms in a given taxonomy using wp_list_categories 

    $orderby  = 'name'; 
    $show_count = 1;  // 1 for yes, 0 for no 
    $pad_counts = 0;  // 1 for yes, 0 for no 
    $hierarchical = 0;  // 1 for yes, 0 for no 
    $show_option_none=''; 
    $title  = ''; 

    $args_sector = array(
     'taxonomy'  => 'sector', 
     'orderby'  => $orderby, 
     'show_count' => $show_count, 
     'pad_counts' => $pad_counts, 
     'hierarchical' => $hierarchical, 
     'title_li'  => $title 
    ); 


<ul id="sideNav" class="rightSubMenu"> 
     <h3 class="rightSubNav">SECTOR</h3> 
     <ul id="sideNav" class="rightSubMenu"> 
     <?php wp_list_categories($args_sector); ?> 
     </ul> 

</ul> 

私は「クラブ」にリンクされているプロジェクトがある場合は、問題があると「クラブ」にリンクされたクライアントは出力数を示します2.また、アーカイブページには2つの投稿が表示されます.1つはプロジェクト用、もう1つはクライアント用です。しかし、プロジェクトは1つだけです。

私は主にプロジェクトページに関係しており、私の 'プロジェクト'投稿タイプで結果をフィルタリングしたいと考えています。私はコーデックスを見て、wp_list_categories関数はこれを行うためのパラメータを受け入れていないようです。

誰でも手助けできますか?これを行うより良い方法はありますか?

答えて

0

私は同様の問題がありました。あなたが見ることができるように、

foreach ($categories as $key => $category){ 
     $temp = array ('post_type'=>$r['type'], 'tax_query' => array(
      array (
       'taxonomy' => $category->taxonomy, 
       'field' => 'slug', 
       'terms' => $category->slug 
      ) 

     ) 
      ); 
     $pauli = new wp_query($temp); 
     if($pauli->post_count==0){ 
      unset($categories[$key]); 
     } 
    } 

それはそうではないカテゴリを削除:$カテゴリ= get_categories($ r)この:私は、wp_list_categories機能をクローニングし、それを別の名前を与え、行の後に、このコードに置くことによってこれをしませんでしたあなたが必要とする投稿タイプを持っていて、wp_list_categoriesが正常に処理を続行します。

+0

'wp_list_categories()'のカスタムバージョンを作成せずにこの方法を実装できます。よりクリーンなアプローチで同じコードを使用するには、[''get_terms''フィルタ]にフックします(http://adambrown.info/p/wp_hooks/hook/get_terms?version=3.6&file=wp-includes/taxonomy.php )、ターゲットタクソノミーを確認し、ダッシュボードにはないこと、そしてメインクエリが実行されていることを確認します。次にカウントを変更します。 –

関連する問題