
僕は記事に画像を挿入する際は毎回「代替テキスト(Alt属性値)」を入力しています。
これは、画像の説明となる「代替テキスト」を入力し、画像内容を検索エンジンに正確に伝えることによって、多少なりともSEO的な効果があるのではないかと思ってのことです。実際どのくらい効果があるのかは、わからないのですけど。
それはさておき僕は、毎回Alt属性値を入力するたびに常々こう思っていました。「(ほぼ)検索エンジンに向けてAltを入力するのはもったいないなぁ。何か入力したテキストを有効利用できないもんか。」と。
で、先日ネットで紹介されていたエフェクトを見たときに、「これだ!」と思い、「Altを利用しキャプションを表示するホバーエフェクトの実装方法」を思いついたので紹介です。
目次
今回のカスタマイズをすると
今回紹介するカスタマイズを行うと、Wordpress記事作成時にAlt属性とともに画像を挿入すると、Alt属性値がキャプションとなって以下のように表示されます。

PCで画像の上にマウスを乗せてみてください。
WordPressテーマのカスタマイズ方法
![]()
カスタマイズに必要な主な手順は以下です。
- エフェクト用のスタイルシートを書く(コピペ)
- imgをエフェクト用ラッパーで囲む処理を書く(コピペ)
単に、Wordpressテーマ(子テーマ)に2回コピペするだけなので、かなり簡単にできるカスタマイズになっていると思います。
エフェクト用のスタイルシートを書く
まずは、マウスホバー時にキャプションをアニメーション表示するスタイルシートを記入します。
テーマ(子テーマ)のstyle.cssに以下のように追記してください。
.hover-image {
display: inline-block;
margin: 10px;
text-align: left;
opacity: .99;
overflow: hidden;
position: relative;
border-radius: 3px;
box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.05);
}
.hover-image:before {
content: '';
background: -webkit-linear-gradient(top, transparent 0%, rgba(0, 0, 0, 0.7) 100%);
background: linear-gradient(to bottom, transparent 0%, rgba(0, 0, 0, 0.7) 100%);
width: 100%;
height: 50%;
opacity: 0;
position: absolute;
top: 100%;
left: 0;
z-index: 2;
-webkit-transition-property: top, opacity;
transition-property: top, opacity;
-webkit-transition-duration: 0.3s;
transition-duration: 0.3s;
}
.hover-image img {
display: block;
max-width: 100%;
backface-visibility: hidden;
-webkit-backface-visibility: hidden;
}
.hover-image .details {
font-size: 16px;
padding: 20px;
color: #fff;
position: absolute;
bottom: 0;
left: 0;
z-index: 3;
}
.hover-image .details span {
display: block;
opacity: 0;
position: relative;
top: 100px;
-webkit-transition-property: top, opacity;
transition-property: top, opacity;
-webkit-transition-duration: 0.3s;
transition-duration: 0.3s;
-webkit-transition-delay: 0s;
transition-delay: 0s;
}
/*今回は使用しない
.hover-image .details .title {
line-height: 1;
font-weight: 600;
font-size: 18px;
}*/
.hover-image .details .info {
line-height: 1.2;
margin-top: 5px;
font-size: 12px;
}
.hover-image:hover:before,
.hover-image:hover span {
opacity: 1;
}
.hover-image:hover:before {
top: 50%;
}
.hover-image:hover span {
top: 0;
}
/* 今回は使用しない
.hover-image:hover .title {
-webkit-transition-delay: 0.15s;
transition-delay: 0.15s;
}*/
.hover-image:hover .info {
-webkit-transition-delay: 0.25s;
transition-delay: 0.25s;
}
エフェクトのスタイルシートは、以下のコードを参考にさせていただきました。
上記の方法では、キャプションとなるテキストをspanタグを用いて、手入力する必要がありました。けれど、今回はPHPを利用して、「本文内にimgがあったら自動でタグを挿入する」ようにしたいと思います。
PHP側で、このように自動処理させることで、これまで書いてきた過去記事のIMGタグは変更する必要がなく、Alt属性値を勝手に利用し表示してくれます。
imgをエフェクト用ラッパーで囲む処理を書く
で、上記のスタイルを適用させるには、functions.phpに「本文中にimgが出てきたら、適切にエフェクト用のラッパーでくるむ処理」を書く必要があります。
その処理が以下。こちらを、functions.phpにコピペで追記します。
//画像が出てきたらキャプション表示用のラッパーを装着
function wrap_hover_image($the_content) {
if ( is_singular() ) {
//Alt属性値のある画像タグをラッパー付きのタグで置換する
$the_content = preg_replace(
'/(<img.+?alt=[\'"]([^\'"]+?)[\'"].+?>)/i',
'<div class="hover-image">${0}<div class="details"><span class="info">${2}</span></div></div>',
$the_content);
}
return $the_content;
}
add_filter('the_content','wrap_hover_image');
これは、本文を表示する前に、「通常の画像タグ」を、「エフェクト用のタグ」でくるむよう正規表現を使って置換処理をしています。
利用方法
あとは、記事編集で画像を挿入するとき「代替テキスト(Alt属性値)」を入力して投稿に挿入すればOKです。
ソースはこんな感じです。
<img alt="記事編集時に「代替テキスト(Alt属性値)」を入力して投稿に挿入する" src="https://nelog.jp/wp-content/uploads/2015/06/Alt1.jpg" />

画像へのリンクが入っていても大丈夫です。
<a href="#"><img alt="画像へのリンクが入っていてもホバーエフェクト用のラッパーは装着されます" src="https://nelog.jp/wp-content/uploads/2015/06/thumb6.jpg" /></a>
![]()
ただし、Alt属性値が設定されていないとホバーエフェクトは表示されません。
<img src="https://nelog.jp/wp-content/uploads/2015/06/428ea6f60b4a63342f62e6baae25b414.jpg" />

なので、「代替テキスト(Alt属性値)」を設定していない、アイキャッチ画像などは、通常通りエフェクトなしで表示させることもできます。
まとめ
今回、SEO以外でもAlt属性値を有効活用すべく、Wordpressテーマのカスタマイズ方法考えてみました。
Alt属性値は、1度入力してしまうと、確認が面倒くさいため誤字脱字に気づきにくいのです。けれど、今回のようなエフェクトで手軽に表示できるようにすると、入力内容の確認が容易にもなるかと思います。
もちろん、今回のカスタマイズをしてもスマホでは表示されません。
けれど、PCで見ている人が「このサイトは画像1つ1つに説明が入っているなんて手間がかかっているなぁ。これだけちゃんと作ってあるとこの情報なら信頼できるかも。」なんてことを少しでも思ってくれたら、めっけもんだと思います。