wp_list_categoriesで、パラメータ「use_desc_for_title=false」がうまく作動しないから「title=false」としたら動いた

wp_list_categories のパラメータ use_desc_for_title がうまく動かない…、とずっと言われ続けてきていますが、WordPress3.3 になっても、どうやら正常に動いてないみたい模様ですね。

<?php wp_list_categories(); ?> でカテゴリを一覧で吐き出すと
[php] <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>
[/php] のように、「title=”hogeに含まれる投稿をすべて表示”」 が表示されてしまいますので、今回はこの「に含まれる投稿をすべて表示」の文言を表示させない方法を紹介させていただきます。

「カテゴリ説明」を登録した上で「title=false」を使う

今ところ、これが個人的に上手く動いている方法です。

カテゴリの説明の登録

手順としては、WordPress 管理画面よりカテゴリの設定ページへ遷移し、面倒ですけれども「カテゴリの説明」を登録します。
wp_list_categoriesで、パラメータ「use_desc_for_title=false」がうまく作動しないから「title=false」としたら動いた

テーマファイルの編集

編集と言っても <?php wp_list_categories(); ?> のパラメータを変更するだけですが、
sidebar.phpなどに
[php] <?php wp_list_categories(‘title=false’); ?>
[/php] と書きます。

wp_list_categories のパラメータは & でつないで複数設定することが出来ますので、例えば特定カテゴリ(カテゴリID1、2、3、5、7の場合)を出力する時は
[php] <?php wp_list_categories(‘include=1,2,3,5,7&title=false’); ?>
[/php] のような感じになります。

「name」でソートする場合は
[php] <?php wp_list_categories(‘sort_order=name&include=1,2,3,5,7&title=false’); ?>
[/php] のような感じになります。

注意点としては、title=false を追記したとしても、WordPress管理画面のカテゴリ設定ページで、カテゴリの説明が登録されていない場合は「title=”hogeに含まれる投稿をすべて表示”」とデフォルトの状態で吐き出されてしまいます。


wp-includes/category-template.php を編集する

もう1つ別の方法を紹介します。

カテゴリ説明の登録が面倒…あるいはファイル側だけで作業を完結したい!という場合は、
WordPress 3.1以降 「~に含まれる投稿をすべて表示」を非表示にする の記事でも紹介されているように、wp-includes/category-template.php ファイルの
[php] $link .= ‘title="’ . esc_attr( sprintf(__( ‘View all posts filed under %s’ ), $cat_name) ) . ‘"’;
[/php] という箇所を

[php] $link .= ‘title="’ . esc_attr( sprintf($cat_name) ) . ‘"’;
[/php] のように変更してしまう方法もあるようですね。

ただ、WordPress3.3 から上記「$link」が記述されているファイルが category-template.php に変わった…など、WordPress 本体のバージョンアップの際には注意が必要になりそうですね。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください