2013年10月09日 web関連WordPressphp

記事内の画像をいい感じのエフェクトをつけて拡大表示させるWordPressのプラグイン「Easy FancyBox」というのを導入したのですが、挿入されたaタグやimgタグに固有のクラス名がないので、CSSで調整しづらかったので、リンク付きの画像を挿入したい際に自動でclass名を追加するようにしました。

imgタグにclassを追加する場合とaタグに追加する場合を分けて書きます。

挿入されたimgタグにclass名をつける

functions.php内に記述
<?php
// 記事に画像投稿する際に、自動でクラス名をつける
function give_linked_images_class($html, $id, $caption, $title, $align, $url, $size, $alt = '' ){
  $classes = 'fancybox img-rounded'; // separated by spaces, e.g. 'img image-link'

  // check if there are already classes assigned to the anchor
  if ( preg_match('/<img.*? class=".*?" \/>/', $html) ) {
    $html = preg_replace('/(<img.*? class=".*?)(".*?\/>)/', '$1 ' . $classes . '$2', $html);
  } else {
    $html = preg_replace('/(<img.*?)\/>/', '$1 class="' . $classes . '" >', $html);
  }
  return $html;
}
add_filter('image_send_to_editor','give_linked_images_class',10,8);
?>

管理画面で記事投稿の際に、画像を挿入すると、それに「fancybox img-rounded」という2つのクラスをつける用に設定しています。imgタグ内に既にclassがあれば、そこに追加、なければ、classを新規設定する、といった感じです。ソース内の$1、$2などは正規表現の後方参照というやつです。正規表現内の()の内容とマッチします。最初の()の内容が$1になります。

挿入されたaタグにclass名をつける

functions.php内に記述
<?php
function give_linked_images_class($html, $id, $caption, $title, $align, $url, $size, $alt = '' ){
  $classes = 'fancybox';

  // check if there are already classes assigned to the anchor
  if ( preg_match('/<a.*? class=".*?">/', $html) ) {
    $html = preg_replace('/(<a.*? class=".*?)(".*?>)/', '$1 ' . $classes . '$2', $html);
  } else {
    $html = preg_replace('/(<a.*?)>/', '$1 class="' . $classes . '" >', $html);
  }
  return $html;
}
add_filter('image_send_to_editor','give_linked_images_class',10,8);
?>

aタグにclassをつける場合はimgタグの場合とほぼ同じです。正規表現の内容が少し変わるぐらい。

WordPressをカスタマイズするといつも思うのですが、コアファイルを直接触らなくても細かいところまで設定出来るのは、とても助かりますね。

この投稿へのコメント

コメントはまだありません。

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます。
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

CAPTCHA


ピックアップ記事

PHP で 配列をGET送信する

2012年02月02日 php
http_build_query PHPで配列をGET送信するには、「http_build_query」を使って、URLエンコードされたクエリ文字列を生成します。 サンプルコード [php]<?php $data = array('foo', 'bar', 'baz', 'boom', 'cow' => 'milk', 'php' =>'hypertext processor…
「PHP で 配列をGET送信する」をはてなブックマークに追加

WordPressサイト全体に認証をかける

2011年11月30日 WordPress
プラグインダウンロード 以下のサイト内から「Angsuman’s Authenticated WordPress Plugin」をダウンロードします。 Angsuman’s Authenticated WordPress Plugin プラグイン編集 プラグインの内容が古くなっていて、最新のWordPressの認証に対応していないので、以下のように書き換えます。 ac_authenti…
「WordPressサイト全体に認証をかける」をはてなブックマークに追加

Dreamweaverでソースコードの整形

2014年08月22日 HTML5・CSS3jQuery・javascriptphp
Dreamweaverでソースコードの整形
HTMLやCSSなどのソースコードを簡単に整形する方法です。 Dreamweaver以外でも出来るソフトがあるようですが、手元のDWを使うのが一番便利そうなので、今回はDWのやり方を紹介します。 …
「Dreamweaverでソースコードの整形」をはてなブックマークに追加

PHP フォーム入力された文字エスケープ

2011年08月04日 php
PHPでフォームを作る場合、INPUTやTEXTAREAを使いますが、そこから受け取る内容はエスケープする必要があります。受け取ったまま表示したり、DB登録なんかをしてしまうと、思わぬトラブルにみまわれることになります。 …
「PHP フォーム入力された文字エスケープ」をはてなブックマークに追加

親カテゴリIDを取得・表示

2011年11月28日 WordPress
現在表示中のページ(記事)の親カテゴリIDを表示させます。 [php] <?php // 現在のカテゴリ-を配列取得 $cat_now = get_the_category(); // 親の情報を$cat_nowに格納 $cat_now = $cat_now[0]; //category_parentを$parent_idに格納 $parent_id = $cat_now->cate…
「親カテゴリIDを取得・表示」をはてなブックマークに追加
© graffiti on the web . All rights reserved. WordPress Theme by comfy