特定のカテゴリの時にタグを制約する

例えばカテゴリA,カテゴリB,カテゴリCとあって
特定のタグで絞込みをかけたい場合、

つまり普通のタグの状態だとカテゴリA,B,Cも含まれてしまうが
カテゴリAのなかで特定のタグをクリックしたときに現在のカテゴリAで絞り込みをかける方法

ストーリーとしてはユーザーがカテゴリAの一覧表示ページなかで
タグ「かわいい」をクリックしたときカテゴリB,Cを含まずに
カテゴリAに限定した状態で「かわいい」とタグ付けされた投稿を絞り込むという設定

category.phpで現在表示しているカテゴリのスラッグを取得して
表示されるタグのリンクにgetパラメータとしてスラッフを付与。

tag.phpでそのパラメータを使ってquery_postsで絞りこみをかける

タグのリンクにcategoryスラッグを付与するためにcategory.phpで
カスタフィルタを設定してcatergoryスラッグとtagデータ(get_the_tags())を引数にしてリンクを生成したHTMLを作成

//////category.php///////////////////

<?php
    /現在のカテゴリ(スラッグ取得)/
    $now_cate = get_query_var('cat');
    $cat = get_category($now_cate);
    $cat_slug = $cat->slug;
?>   
      
<?php while ( have_posts() ) : the_post(); ?>

    <?php
        //カスタムフィルタでtagURL生成時にgetパラーメータとしてカテゴリスラッグ付与
        //実処理はfunctions.phpで設定
        $tag_content = apply_filters('tag_set_catslug',  $cat_slug, get_the_tags());
        echo($tag_content);                                       
    ?>
       
<?php endwhile; ?>

//////functons.php///////////////////

/*****************************************************
タグのリンクにカテゴリースラッグ名をパラメータとして付与
@param $slug:スラッグ名
@param $taghdata:get_the_tagsで取得したタグデータ
******************************************************/
function tag_link_set_catslug($catslug, $taghdata){  
    $output = '';
    $prefix ='<a href="/tag/';
    $prefix2 ='" rel="tag">';
    $suffix = '</a>';
    foreach ($taghdata as $tag) {
        $output = $output.$prefix.$tag->slug."?cat_name=".$catslug.$prefix2.$tag->name.$suffix;
    }   
   
   
    return $output;
}

//末尾の2はtag_link_set_catslugの引数の数
add_filter('tag_set_catslug', 'tag_link_set_catslug', 10, 2);      

//////tags.php///////////////////

<?php
/指定カテゴリ GETパラメータより取得/
 $param = htmlspecialchars($_GET['cat_name'], ENT_QUOTES);
 
 if($param != ''){
     $addparam = '&category_name=' .$param;
 }
query_posts($query_string .$addparam);  ?>

<?php while ( have_posts() ) : the_post(); ?>

/**********
諸々の処理
**********/

<?php endwhile; ?>
<?php wp_reset_query(); /*リセット */?>

[`evernote` not found]
Pocket
[`yahoo` not found]