いつもいつもこれは邪魔だな~と思っていましたが、テンプレートタグの「wp_list_categories」で出力されるカテゴリのリンクには「title属性」が与えられていて、マウスオーバーすると下の画像のように「に含まれる全ての投稿を表示」と出てきてしまいます。
今回は、これを消す方法をご紹介します。
まず、「wp-includes」内にあるファイルは編集しないほうがいいです
巷でよくある方法としては「wp-includes」内にある「classes.php」を編集する方法です。この方法は正直言って、オススメできないです。理由は、WordPressのバージョンアップに伴って、編集した「classes.php」も書き換わる場合があるからです。
なので、アップグレード後に再度classes.phpを編集しないといけないです。
この方法は、いますぐやめましょう。管理が面倒です。
WordPressの管理画面からカテゴリの説明を入れて消す方法もありますね
ところで「に含まれるすべての投稿を表示」は、WordPressの管理画面からたどって消すこともできます。
下の画像のようにWordPressの管理画面から、カテゴリをクリックします。
編集したいカテゴリを選びます。この場合は「wordpress」です。
カテゴリーの編集に「説明」欄がありますので、入力します。
下の画像は入力後のカテゴリ「wordpress」にマウスオーバーした時のものです。このように、変更はできます。
ただし・・・上の方法はちょっと面倒です
カテゴリの説明に「何かを入れないといけない」ので、これはちょっと今からは面倒な方もいらっしゃるのではないでしょうか。また、カテゴリが増える度に説明を入れるのも・・・面倒です。というわけで、とにかく私は後々面倒になることは避けたいので、下の方法で解決しています。
- 1.マウスオーバー時に「カテゴリ名は残す」場合
- 2.マウスオーバー時に「何も表示させたくない」場合
2パターンの方法がありますので、どちらかお好みの方法をお試しくださいませ。
1.マウスオーバー時に「カテゴリ名は残したい場合」
仕上がりはこうなります。カテゴリ名だけ残っていますね。
コードは以下です。
このコードをテーマファイル内の「functions.php」の最下部に追記します。 <?php add_filter('wp_list_categories', 'remove_category_link_prefix'); function remove_category_link_prefix($output) { return str_replace(' に含まれる投稿をすべて表示', '', $output); } ?>
これはなにをやっているかというと
フィルターフックを使って「wp_list_catecories()」を呼び出したときに「に含まれる投稿をすべて表示」の文字列を置換(削除)しています。
2.マウスオーバーしても何も表示したくない場合
下の画像がサンプルです。マウスオーバーしても、何も表示されません。
コードは以下です。このコードをテーマファイル内の「functions.php」の最下部に追記します。
<?php add_filter('wp_list_categories', 'remove_category_link_prefix'); function remove_category_link_prefix($output) { return preg_replace( '/title=\"(.*?)\"/' , ' ' , $output ); } ?>
これはなにをやっているかというと
1の場合と理屈は似ています。
フィルターフックを使って「wp_list_catecories()」を呼び出したときに、「title=”xxx”」の表示を置換(削除)しています。もっと単純に言うと、「title」属性を丸ごと削除しています。1.2の、どちらのパターンでもお好みでご使用するとすっきりするかもです。
また、「functions.php」にフィルターフックしておけば、「wp-list_categories」の呼び出しには、全てこのコードが適用されるのでラクです。
それに、他のwordpressを構築する際にもコードは再利用できるので、いいことばかりだと思います。
参考リンクはこちら
http://divpress.com/mods/remove-view-all-posts-filed-under-from-wp_list_categories.htm
このページを共有する