use_desc_for_titleが動かない問題
wp_list_categoriesのパラメータuse_desc_for_titleがうまく動かない…、とずっと言われ続けてきていますが、WordPress3.3になっても、どうやら正常に動いてないみたい模様ですね。<?php wp_list_categories(); ?>でカテゴリを一覧で吐き出すと
1 2 3 4 |
<li class="cat-item cat-item-**"> <a href="http://www.hogehoge.com/category/hoge/" title="hogeに含まれる投稿をすべて表示">hoge</a></li> <li class="cat-item cat-item-**"> <a href="http://www.hogehoge.com/category/hogehoge/" title="hogehogeに含まれる投稿をすべて表示">hogehoge</a></li> |
のように、「title=”hogeに含まれる投稿をすべて表示”」が表示されてしまいますので、今回はこの「に含まれる投稿をすべて表示」の文言を表示させない方法を紹介させていただきます。
「カテゴリ説明」を登録した上で「title=false」を使う
今ところ、これが個人的に上手く動いている方法です。カテゴリの説明の登録
手順としては、WordPress 管理画面よりカテゴリの設定ページへ遷移し、面倒ですけれども「カテゴリの説明」を登録します。テーマファイルの編集
編集と言っても<?php wp_list_categories(); ?>のパラメータを変更するだけですが、sidebar.phpなどに
1 |
<?php wp_list_categories('title=false'); ?> |
と書きます。
※wp_list_categoriesのパラメータは & でつないで複数設定することが出来ますので、例えば特定カテゴリ(カテゴリID1、2、3、5、7の場合)を出力する時は
1 |
<?php wp_list_categories('include=1,2,3,5,7&title=false'); ?> |
のような感じになります。
「name」でソートする場合は
1 |
<?php wp_list_categories('sort_order=name&include=1,2,3,5,7&title=false'); ?> |
のような感じになります。
注意点としては、title=falseを追記したとしても、WordPress管理画面のカテゴリ設定ページで、カテゴリの説明が登録されていない場合は「title=”hogeに含まれる投稿をすべて表示”」とデフォルトの状態で吐き出されてしまいます。
wp-includes/category-template.php を編集する
もう1つ別の方法を紹介します。カテゴリ説明の登録が面倒…あるいはファイル側だけで作業を完結したい!という場合は、
WordPress 3.1以降 「~に含まれる投稿をすべて表示」を非表示にする の記事でも紹介されているように、wp-includes/category-template.phpファイルの
1 |
$link .= 'title="' . esc_attr( sprintf(__( 'View all posts filed under %s' ), $cat_name) ) . '"'; |
という箇所を
1 |
$link .= 'title="' . esc_attr( sprintf($cat_name) ) . '"'; |
のように変更してしまう方法もあるようですね。
ただ、WordPress3.3から上記「$link」が記述されているファイルがcategory-template.phpに変わった…など、WordPress本体のバージョンアップの際には注意が必要になりそうですね。
コメント