例えばカテゴリ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(); /*リセット */?>