(お約束)ご利用は自己責任でお願いします
graphyテーマはとても美しくて全般的には気に入っているのですが、画像のキャプションがはみ出るのだけがちょっと気に入りません。
フルサイズの画像では大丈夫ですが、サムネイルサイズになるとちょっと不格好。
こんな感じです。


これをはみ出ないように、画像の幅とキャプションの幅が一緒になるように修正します。
画像キャプションを出力しているHTMLコードを変更
まずは画像キャプションを出力しているHTMLコードを変更します。functions.phpをいじります。
参考:http://pressstocker.com/image-caption/
今回は、WordPress純正テーマであるTwenty Fifteenなどが使っているfigureやfigcaption(HTML5)で書いてみました。
本来class名はwp-cationやwp-caption-textなのですが、不用意なスタイルの重複を避けるため、またいちいち上書きでスタイルを書き足すのが面倒なために、新しいclass名を wp-cap , wp-cap-text としました。
//wp-captionの変更 WPが標準で出力する画像とキャプションの出力形式の変更
add_shortcode('caption', 'my_img_caption_shortcode');
function my_img_caption_shortcode($attr, $content = null) {
if ( ! isset( $attr['caption'] ) ) {
if ( preg_match( '#((?:<a [^>]+>s*)?<img [^>]+>(?:s*</a>)?)(.*)#is', $content, $matches ) ) {
$content = $matches[1];
$attr['caption'] = trim( $matches[2] );
}
}
$output = apply_filters('img_caption_shortcode', '', $attr, $content);
if ( $output != '' )
return $output;
extract(shortcode_atts(array(
'id' => '',
'align' => 'alignnone',
'width' => '',
'caption' => ''
), $attr, 'caption'));
if ( 1 > (int) $width || empty($caption) )
return $content;
if ( $id ) $id = 'id="' . esc_attr($id) . '" ';
//graphy標準はこれ→ return '<div ' . $id . 'class="wp-caption ' . esc_attr($align) . '" style="width: ' . (10 + (int) $width) . 'px">' . do_shortcode( $content ) . '<p class="wp-caption-text">' . $caption . '</p></div>';
//画像キャプションのHTMLを変更
return '<figure ' . $id .' style="width: ' . (0 + (int) $width) . 'px" class="wp-cap ' . esc_attr($align). '">' . do_shortcode( $content ) . '<figcaption class="wp-cap-text">' . $caption . '</figcaption></figure>';
}
cssの修正
そしてcssを追加します。
細かいスタイル(色color:やfont-size:大きさ)などは好きにしてもらっていいのですが、キモは「max-width: 100%;」これで画像の幅とfigcaptionの幅が同じになります。
/*画像と画像キャプション*/
.wp-cap {
color: #666;
font-size: 90%;
font-style: normal;
margin-bottom: 24px;
max-width: 100%;/*これがキモ*/
}
.wp-cap img[class*="wp-image-"] {
display: block;
margin: 6px auto 0;
}
.wp-cap-text {
text-align: center;
background: #f2f2f2;
}
.wp-cap .wp-cap-text {
padding: 0.5em;
}
/* /画像と画像キャプション*/
コメント