Simple Tags プラグインのタグ絞り込みを改造
結局、SimpleTag に st_single_tag_title() という関数を書き加えた。
/2.5/inc/simple-tags.functions.php に以下を追加。
<?php ここから /** * MODIFIED BY minorio * */ function st_single_tag_title($prefix = '', $display = true, $joint = '+') { global $simple_tags; $my_tag_name = $simple_tags->combined_tag_title($joint); if ( $display ) echo $prefix . $my_tag_name; else return $my_tag_name; } ここまで ?>
さらに、/2.5/simple-tags.client.php に以下を追加。
<?php ここから /** * MODIFIED BY minorio * */ function combined_tag_title($joint) { // Get currents slugs $slugs = get_query_var('tag'); if ( is_array($slugs) ) { $slugs_array = $slugs; } elseif ( strpos( $slugs, '+') ) { $slugs_array = explode('+', $slugs); } elseif ( strpos( $slugs, ' ') ) { $slugs_array = explode(' ', $slugs); }else { $slugs_array[] = urldecode($slugs); } $str = implode($joint, $slugs_array); return $str; } ここまで ?>
テキストウィジェットに以下のように書くと、その下の画像のようになる。
<?php if(is_tag()) { echo str_replace("[s]", st_single_tag_title("", false, "∩"), st_get_related_tags('xformat=<a href="%tag_link_add%" title="[s]∩%tag_name%">[s]∩%tag_name%</a>')); } ?>
タイトルなどにも絞り込みを反映させる
アーカイブのタイトルなどにも整合性を持たせないとユーザーが混乱する。
絞り込みを反映して以下のようになればいい。
これにはテンプレートの修正が必要。テンプレート内の archive.php で、タグ名を出力するところを以下のように書きかえればいい。
<?php if(function_exists('st_single_tag_title')) { st_single_tag_title('', true, '∩'); } else {single_tag_title();} ?>
ページタイトルも直すには、header.php を修正する。こんな感じ。
<title><?php if ( is_single() ) { wp_title(); } elseif (is_category()) { single_cat_title(); } elseif (is_tag()) { if(function_exists('st_single_tag_title')) { st_single_tag_title('', true, '∩'); } else {single_tag_title();} } elseif (is_day()) { the_time('Y-m-d'); } elseif (is_month()) { the_time('Y 年 F'); } elseif (is_year()) { the_time('Y 年'); } elseif (is_author()) { ?>著者<?php } ?> | <?php bloginfo('name'); ?></title>
ページタイトルに関しては、All in One SEO プラグインを導入している場合は設定で「Tag Title Format:」のところを空欄にする必要がある。
空欄にした場合に書き換えを行わないようにするハックはこちらを参照のこと。
> WordPress プラグインの All In One SEO Pack を手直し