ども。鉄王です。
別腹で運営しているWordPressのサイトでは、サムネイル画像の拡大表示にShadowboxをブリバリに使っております。
で、Shadowboxを使うときは、サムネイル画像の<a>タグに
- rel="shadowbox"
- title="キャプションとなる文字列"
を入れることが鉄則(?)なのですが、画像アップ時の「タイトル欄」にキャプションを入れても、WordPressデフォルトのままではこれがスパッと決まってくれないのですね。<img>タグにはtitle属性として自動的に挿入されるのですけど。
で、手作業で<img>タグから<a>タグにコピペするのにも疲れたのでソースをいじりました。以下、WP2.6.3での事例なので、近日正式版が公開されるであろう2.7になると状況が変わるかもしれません。ご利用は計画的に。
/wp-admin/includes/media.phpの61行目。
《修正前》
$html = '<a href="' . clean_url($url) . "\"$rel>$html</a>";
《修正後》
$html = '<a rel="shadowbox" href="' . clean_url($url) . "\" title=\"$title\"$rel>$html</a>";
ひとまず、これでメンドがくさい作業から解放されました。
[2008.12.25追記]
WP2.7になって、ソースが若干変わったようです。2.6.3のときは61行目だったのが、2.7では111行目に変わっていました。
また、画像挿入時に「リンク URL」を『画像のURL』で明示しないとうまくいきません(アップローダの仕様が変わったのかな?)
[2009.6.11追記]
2.8になってまたソースが若干変わりました。2.7では111行目だったのが、2.8になり110行目となりました。
また、関数名も clean_url($url) から esc_url($url) となっています。
[2009.10.23追記]
アップデートのたびにコアファイルをいじるのもうっとうしいので野良プラグインを作ってみました。画像をエディタに挿入する際、自動的に rel="shadowbox[YYYYMMDD]" が追記されます。Codexをご参考にプラグインのPHPファイルを起こし、以下の内容を記述してみてください。WP2.8.5で検証しました。
1 2 3 4 5 6 7 8 | add_filter('image_send_to_editor', 'my_add_rel_attribution'); function my_add_rel_attribution() { $args = func_get_args(); $date = date("Ymd"); $args[0] = preg_replace ( "/(<a )(href=\".+?\".+?alt=\")(.+?)(\")/", "$1rel=\"shadowbox[$date]\" title=\"$3\" $2$3$4", $args[0] ); return $args[0]; } |
[2009.12.28追記]
WP2.9に対応したコードです。以前のコードではalt属性値を<a>タグのtitle属性に当てはめていましたが、2.9対応のコードでは<img>タグのtitle属性値を<a>タグにも当てはめています。
1 2 3 4 5 6 7 8 | add_filter('image_send_to_editor', 'my_add_rel_attribution'); function my_add_rel_attribution() { $args = func_get_args(); $date = date("Ymd"); $args[0] = preg_replace ( "/(<a )(href=\".+?\".+?title=\")(.+?)(\")/", "$1rel=\"shadowbox[$date]\" title=\"$3\" $2$3$4", $args[0] ); return $args[0]; } |
Related posts:
0 Responses to “WordPress – 画像挿入時〈a〉タグにrel属性とtitle属性も自動的に挿入する”