WordPressのカテゴリーは「名前」「スラッグ」「親カテゴリー」「説明」を入力することができます。
今回は「説明」という項目をしっかりと入力した結果、WordPress標準のカテゴリーウィジェットで作成されるリンクのtitle
属性に大量の文字列が入ってしまうため、いっその事title属性を出力しないようにしてしまおうというカスタマイズです!
目次
WordPress標準のカテゴリーウィジェットのaタグからtitle属性を消したい
よっひー(@yosiakatsuki)です。
先日、知り合いのヨスさん(@yossense)の次のツイートを見かけて、原因を探ってみることに…
【だれか教えてください】
WordPressでサイドメニューにあるカテゴリ名をホバーさせると、カテゴリの「説明文」が全部表示されるのですが、どうすれば直りますか?
title=”説明文” で取得しているのだと思いますが・・・なぜこんな仕様なのか(T▽T) 意味不明だわ。 pic.twitter.com/jLAwu3s3mT
— ヨス ← 海外移住めざすプロブロガー (@yossense) 2017年7月11日
結果としては、カテゴリー名にカーソルを合わせた時にtitle属性が表示されるのはブラウザの挙動としておかしい訳ではなくて、
カテゴリー一覧のリンクのtitle属性にカテゴリーの「説明」が入る動きも仕様として正しい動きでした。
なぜホバーした時にこんなにも大量の文字列が表示されるのか…ということは該当のカテゴリー一覧ページを見て理解しました…
カテゴリーの説明のそんな使い方があったか!
…ということで、今のままだと少し都合が悪いと思いますので、カテゴリーウィジェットのaタグからtitle属性を削除してみます。
widget_categories_argsフィルターフックを使って出力をカスタマイズ
WordPressのカテゴリーウィジェットのカテゴリー一覧はwp_list_categories
という関数を使ってHTMLを作成しています。
カテゴリーウィジェットで使っているwp_list_categories
関数に渡す引数はwidget_categories_args
フィルターフックでカスタマイズ出来るので、title属性を出力しないようにパラメータを調整します。
次のコードをテーマのfunctions.php
に追記してください。
function my_widget_categories_args( $cat_args ) {
// カテゴリーの説明をtitleタグに挿入しない
$cat_args['use_desc_for_title'] = 0;
return $cat_args;
}
add_filter( 'widget_categories_args', 'my_widget_categories_args' );
title属性を削除する前
▲コード追記前はこのように、title属性にカテゴリーの説明が入っています…
title属性を削除するカスタマイズ後
▲コード追記後は狙い通りtitle属性が出力されなくなりました!
今回遭遇した例は稀なケースだと思いますが、もし、カテゴリーウィジェットのaタグからtitle属性を削除したい時は参考にしてみて下さい