WordPress3.0で、画像のalt属性とtitle属性を入れ替える。
2010年07月20日 22時17分 月齢:8.7[九日月] 潮汐:小潮
(最終更新日:2019年09月17日)
14年前に投稿 | WordPress | コメントはありません
3分ぐらいで読めます。
この記事は情報が古い場合があります。
WordPress 2.6などは、画像等をアップロードして、タイトル欄にテキストを入力すれば、自動的にalt属性にもtitle属性と同じテキストが適用されました。
WordPress 2.9あたりから、厳密にtitle属性とalt属性を使い分けるため、入力欄も別々になりました。それはそれでいいのですが、両方に文字を入れるの面倒だなぁ、とずっと思っていました。Another HTML-lint gatewayではalt属性を重視されます。それなのに代替テキスト欄ではなく、タイトル欄のほうが必須入力になってる…。Another HTML-lint gatewayの点数を気にする者としては、気になって仕方がありません。こうなったら、改造しかない。
title属性とalt属性の使い分けや違いについては、ここでは触れません。あくまで自分の都合のいいようにWordPressを改造することが目的です。
とはいうものの、どこをいじるべきか。これにはDEVOLEN [WordPress]サムネイル機能使用時に、サムネイル画像のaltが空になるのを直す方法が、参考になりました。WordPress 3.0のmedia.phpでは、648行目の
'alt' => trim(strip_tags( get_post_meta($attachment_id, '_wp_attachment_image_alt', true) )),
を
'alt' => trim(strip_tags( $attachment->post_title )),
にすればalt属性をtitle属性と同じにできます。しかし、この方法は画像等をアップロードした時のみ有効で、すでにアップロードが完了しているファイルには無効です。とりあえずアップロードだけ完了して、あとでテキストをいじることが多いので、この方法はボツ。またalt属性をtitle属性と同様にできるものの、別々のテキストにしようとすると逆に手間がかかります。理想はあくまでもalt属性とtitle属性の入れ替えです。さらにすでにアップロードが完了しているファイルにも適用したい!!
というわけで、探しました。media.phpの226行目を
$html = '<img src="' . esc_attr($img_src) . '" alt="' . esc_attr($alt) . '" title="' . esc_attr($title).'" '.$hwstring.'class="'.$class.'" />';
から
$html = '<img src="' . esc_attr($img_src) . '" alt="' . esc_attr($title) . '" title="' . esc_attr($alt).'" '.$hwstring.'class="'.$class.'" />';
にします。こうすることで、必須項目であるタイトル欄に入力したテキストがalt属性に、代替テキスト欄に入力したテキストがtitle属性に収まってくれます。入力欄が入れ替わっただけなので、別々のテキストを設定することも可能。うーん、理想的だっ。
この手術を施しても、過去の記事のalt属性とtitle属性は入れ替わりません。あくまでもアップロードされた画像等のファイルを操作したときに効果を発揮します。
これで睡眠時間を5分増やすことができそうです。
古い記事・新しい記事
- 古い記事 [2010年06月28日]
- ← WordPress3.0で、文中の全角英数字と半角カナを排除する。
- 新しい記事 [2011年02月12日]
- → WordPress3.0.5にしました。