« CSSだけで作る伸縮ボタン
WordPressでFlashを表示する »


WordPressにJavaScriptでFlashを表示する

WordPress:2.5.1
jQuery:1.2.6
jQuery Flash Plugin:1.0.1
Flash MX:6.0
 
Add this:

前回に続いて、今回は javascript で動的にソースを書き出すことで、Flashを表示しつつ、XHTML Valid にする方法を説明します。

JavaScript で XHTML Valid

通常は以下のように、HTML の任意の位置に <script> タグで括って、document.write(’~’) と記述すれば JavaScript は実行されます。<!– ~ –> の部分はコメントと見なされるので XHTML Valid となります。

ソース:

<script type="text/javascript">
<!--
document.write('
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" WIDTH="200" HEIGHT="50" id="/image/flash_sample" ALIGN=""> <PARAM NAME=movie VALUE="/image/flash_sample.swf"> <PARAM NAME=quality VALUE=high> <PARAM NAME=bgcolor VALUE=#FFFFFF> <EMBED src="flash_sample.swf" quality=high bgcolor=#FFFFFF  WIDTH="200" HEIGHT="50" NAME="flash_sample" ALIGN="" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED></OBJECT>
');
//-->
</script>

しかし、WordPressのエディタにそのまま記述すると、’ や — が 実体参照の &#番号; のように変換されてしまうため、プラグインを使って document.write() を機能させる必要があります。

プラグインの作成

エントリ内にプレースホルダを記述し、ファイルやカスタムフィールドの内容と置換させます。

プレースホルダ:

<!--xxx_insert:ファイル名またはカスタムフィールドのキー-->

例: <!--xxx_insert:hoge.js-->  ファイル名 
例: <!--xxx_insert:hoge,js-->  カスタムフィールド

ピリオドとコンマが紛らわしいですが、ファイル拡張子が .js の JavaScript ファイル名か、カスタムフィールドのキー,jsと記述すれば、JavaScript 用のタグを自動で追加するようにします。書式はお好みで変更してください。

ソース:

function hoge_insert($content)
{
  global $post;

  $pattern = '<!--xxx_insert:([\w\-\/]+)([\.|,\w$]*)-->';

  if(!preg_match_all('@'.$pattern.'@', $content, $fields))
    return $content;

  $search  = array();
  $replace = array();

  for($i=0; $i<count($fields[0]); $i++) {
    $key = $fields[1][$i];
    $ext = $fields[2][$i];
    $sep = substr($ext, 0, 1);
    $typ = substr($ext, 1);
    $val = '';

    if($sep == '.')
      $val = file_get_contents(TEMPLATEPATH.'/'.$key.$ext);
    else
      $val = get_post_meta($post->ID, $key, true);

    if(!empty($val)) {
      switch($typ) {
        case 'js':
          $val = '<script type="text/javascript">'
               . "<!--\n" . $val . "\n//-->"
               . '</script>';
        break;
      }

      $search[]  = $fields[0][$i];
      $replace[] = $val;
    }
  }

  return str_replace($search, $replace, $content);
}

add_filter('the_content', 'xxx_insert');

このソースでプラグインファイルを作成し、プラグインフォルダにアップロードして、管理画面からプラグインを有効にします。

ファイルから置換する場合:

<!--xxx_insert:js/flash_sample.js-->


カスタムフィールドから置換する場合:

<!--xxx_insert:flash_sample,js-->

jQuery で XHTML Valid

jQuery Flash Pluginを使うとさらに簡単に Flash を表示できます。 ソース:

jQuery(function(){
  jQuery('#insert_flash_sample').flash({
    src: '/image/flash_sample.swf',
    width: 200,
    height: 50
  });
});

上記ソースを .js ファイルかカスタムフィールドに記述し、エントリにはプレースホルダを記述します。ここでは例として、カスタムフィールドを使用し、キーを jquery_flash_sample とします。

ソース(エントリ内):

<div id="insert_flash_sample"></div>
<!--xxx_insert:jquery_flash_sample,js-->

表示結果(Flash):

なお、jQuery Flash Plugin は Flash 挿入元の div を class=”alt” で置換するため、すでに同じクラス名を使用している場合は、これを変更しましょう。バージョン 1.0.1 なら、216行目 $$.replace 関数です。

this.innerHTML = '<div class="alt">'+this.innerHTML+'</div>';

Trackback

Leave a Comment

« CSSだけで作る伸縮ボタン
WordPressでFlashを表示する »