WordPress の自動メディアリンクにメディア形式を追加する

WordPress 2.9 から追加された oEmbed (自動メディアリンク) が便利です。
例えば、YouTube や Flickr の URL を書くだけで、投稿が表示される際に URL の位置に自動的に YouTube 動画や Flickr の写真が埋め込まれて表示されます。

現在、デフォルトで対応しているのは、以下のメディアです。

  • YouTube
  • Vimeo
  • DailyMotion
  • blip.tv
  • Flickr (both videos and images)
  • Viddler
  • Hulu
  • Qik
  • Revision3
  • Scribd
  • Photobucket
  • PollDaddy
  • Google Video
  • WordPress.tv(現在は VideoPress 形式の動画のみ)
  • SmugMug(WordPress 3.0 以降)
  • FunnyOrDie.com(WordPress 3.0 以降)

これ以外のメディア(例えば、ニコニコ動画)とかは使えないんでしょうか?
ちょっとしたコードを追加してやることで、他のメディアにも対応できるようになります。

wp_embed_register_handler() 関数を使ってハンドラーを登録することで、様々なメディアに対応させることができます。

PDF を自動メディアリンクに対応させる

pdf 形式のファイルを、Google Docs Viewer で表示するには、以下のコードをテーマの functions.php に追加してください。

function wp_embed_handler_pdf( $matches, $attr, $url, $rawattr ) {
	$width = 600;
	$height = 780;
	$embed = sprintf(
			'<iframe src="http://docs.google.com/viewer?url=%1$s&embedded=true" width="%2$d" height="%3$d" style="border: none;"></iframe>',
			esc_attr(rawurlencode($matches[0])),
			(int) $width,
			(int) $height
			);
	return apply_filters( 'embed_pdf', $embed, $matches, $attr, $url, $rawattr );
}
wp_embed_register_handler( 'pdf', '/^https?(:\/\/[-_\.!~*\'()a-zA-Z0-9;\/:\@=+\$,%#]+)(\.pdf)$/', 'wp_embed_handler_pdf' );

デモを以下に置いておきます。
http://demo.dogmap.jp/2011/01/26/wp_embed_register_handler-test/

ニコニコ動画を自動メディアリンクに対応させる

ニコニコ動画を対応させるには、以下のコードをテーマの functions.php に追加してください。

function wp_embed_handler_nicovideo( $matches, $attr, $url, $rawattr ) {
	$vid = esc_attr($matches[1]);
	$width = 485;
	$height = 385;
	$embed = sprintf(
		'<div id="nicovideo-%3$s"><iframe width="%1$d" height="%2$d" src="http://www.nicovideo.jp/thumb/%3$s" scrolling="no" style="border:solid 1px #CCC;" frameborder="0"><a href="%4$s">%4$s</a></iframe></div>',
		(int) $width,
		(int) $height,
		$vid,
		esc_attr($matches[0])
		);

	$embed .= "<script type=\"text/javascript\">
jQuery(function(){
	var output = [];
	document._write = document.write;
	document.write = function(v){ output.push(v); }
	jQuery.getScript('http://ext.nicovideo.jp/thumb_watch/{$vid}', function(){
		jQuery('#nicovideo-{$vid}').html(output.join(''));
		output = [];
		document.write = document._write;
	});
})
</script>";
	return apply_filters( 'embed_pdf', $embed, $matches, $attr, $url, $rawattr );
}
wp_embed_register_handler( 'nicovideo', '/https?:\/\/www\.nicovideo\.jp\/watch\/(sm[\d]+)([\?])?([-_\.!~*\'()a-zA-Z0-9;\/:\@=+\$,%#]+)?/i', 'wp_embed_handler_nicovideo' );
wp_enqueue_script('jquery');

デモを以下に置いておきます。
http://demo.dogmap.jp/2011/01/26/ニコニコ動画テスト/

これ、もうちょっと手を加えればプラグインとして公開できますね。

3 thoughts on “WordPress の自動メディアリンクにメディア形式を追加する

  1. saya806

    ニコニコ動画の張り付けに関して、こちらでも試しているのですが、
    ・貼り付ける動画の大きさを変えても、フルサイズ固定になってしまう
    ・ページ内につき1枚しか動画は貼り付けられない
    という問題があるようです。

    返信
  2. ピンバック: wordpressで画像アップが億劫な人へ | ぴとり.net

  3. ピンバック: Tweets that mention WordPress の自動メディアリンクにメディア形式を追加する : dogmap.jp -- Topsy.com

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください