【WordPress】カテゴリーウィジェットのリンクからtitle属性を削除する方法

【WordPress】カテゴリーウィジェットのリンクからtitle属性を削除する方法

WordPressのカテゴリーは「名前」「スラッグ」「親カテゴリー」「説明」を入力することができます。

今回は「説明」という項目をしっかりと入力した結果、WordPress標準のカテゴリーウィジェットで作成されるリンクのtitle属性に大量の文字列が入ってしまうため、いっその事title属性を出力しないようにしてしまおうというカスタマイズです!

WordPress標準のカテゴリーウィジェットのaタグからtitle属性を消したい

よっひー(@yosiakatsuki)です。

先日、知り合いのヨスさん(@yossense)の次のツイートを見かけて、原因を探ってみることに…

結果としては、カテゴリー名にカーソルを合わせた時に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属性を削除したい時は参考にしてみて下さい