HTML,CSS,PHP,ワードプレスカスタマイズ 技術情報資料

youtube API ※ 画像をクリックしたら動画を再生させる方法(レスポンシブ対応)

スポンサーリンク

youtube の 動画コントロールは結構厄介。
それがレスポンシブともなると、泣きを見る。

手順としては、
1、youtube の画像を表示しておく。
2、画像をクリックされたら、youtube の タグに入れ替える
(youtube API の ハンドル作成 / 自動生成ボタンを勝手に押す)
3、youtube の再生が終わったら、ハンドルを削除して、画像を表示する

で、うだうだ言わずにソースと結論と解説。

ソースパクって、id youtube の部分(ソースパクったらテキストエディタで検索すればよい)と
YouTubeのIDとプレーヤーの幅と高さ(サイズ)だけ変えれば済むと思う。
ただし、レスポンシブのテーマ(テンプレート)にしておかないと、
画像を元に戻す時画像サイズの指定が必要になるので注意。
----- HTML部分 -----
<div id="youtube">
    <img src="画像URL" style="cursor : pointer;" class="alignnone size-full wp-image-219" onclick="youtube_click();" />
</div>



----- スクリプト部分 -----
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var ytPlayer;
function youtube_click()
{
	var windowWidth = screen.width; //$(window).width();
	var windowSm = 767;

	//----- 説明 -----
	//「横幅640px以下のとき(つまりスマホ時)に行う処理を書く」
	//と
	//「横幅640px以上のときに行う処理を書く」
	//は、プレーヤーのサイズしか違わないので変数だけ設定して処理するでもOK.
	//---------------

	//横幅640px以下のとき(つまりスマホ時)に行う処理を書く
	if (windowWidth <= windowSm) {
		ytPlayer = new YT.Player(
			'youtube', // 埋め込む場所の指定
			{
				width: 295, // プレーヤーの幅
				height: 180, // プレーヤーの高さ
				videoId: 'YouTubeのID', // YouTubeのID
				events: {
					'onReady': onPlayerReady, // プレーヤーの準備ができたときに実行
					'onStateChange': onPlayerStateChange // プレーヤーの状態が変更されたときに実行
				},
				playerVars: {
					controls: 0, //コントロールの表示を止める
					showinfo: 0, //動画情報の表示を止める
					rel: 0       // 再生終了後に関連動画を表示しない
				}
		    }
		);
	}else{
	//横幅640px以上のときに行う処理を書く
		ytPlayer = new YT.Player(
			'youtube', // 埋め込む場所の指定
			{
				width: 600, // プレーヤーの幅
				height: 337, // プレーヤーの高さ
				videoId: 'YouTubeのID', // YouTubeのID
				events: {
					'onReady': onPlayerReady, // プレーヤーの準備ができたときに実行
					'onStateChange': onPlayerStateChange // プレーヤーの状態が変更されたときに実行
				},
				playerVars: {
					controls: 0, //コントロールの表示を止める
					showinfo: 0, //動画情報の表示を止める
					rel: 0       // 再生終了後に関連動画を表示しない
				}
		    }
		);
	}
	//----- 説明 -----
	//プレーヤーの準備ができたとき動画再生
	//---------------
	// プレーヤーの準備ができたとき
	function onPlayerReady(event) {
	    // 動画再生
	    event.target.playVideo();
	}
	//----- 説明 -----
	//再生が終わったらプレーヤーを殺して画像に戻す
	//---------------
	function onPlayerStateChange(event){
	        // 現在のプレーヤーの状態を取得
	        var ytStatus = event.data;
	        // 再生終了したとき
	        if (ytStatus == 0) {
	                // youtube player のハンドル削除 ディスコンストラクタ
	                ytPlayer.destroy(); 
	                // 画像を戻す
	                document.getElementById("youtube").innerHTML = '<img src="画像URL" style="cursor : pointer;" class="alignnone size-full wp-image-219" onclick="youtube_click();" />';
        	}
	}
}
</script>

スポンサーリンク

スポンサーリンク

よく使うタグ

・float クリア
<br clear="all"><div style="clear:both;" class="clearfix"></div>
・角丸め
round-radius
border-radius:5px; -webkit-border-radius:10px; -moz-border-radius:10px;
・div box
overflow:scroll;min-width:300px;max-width:300px;min-height:300px;max-height:300px;
・TEXTAREAリサイズ
resize: vertical;
・サイトURL
home_url() // http://…
if(site_url()==home_url){
$shorturl_yuzu_path = substr(ABSPATH,0,strpos( ABSPATH, substr(site_url(),strlen(home_url()) ) ) ).’/’;
}else{
$shorturl_yuzu_path = ABSPATH.’/’;
}
// /var/…
・WP HOME URL
site_url() // http://…/wp
ABSPATH // /var/…/wp
・プラグイン(自分のDIR追加必要)
plugins_url() // http://…/plugins
WP_PLUGIN_URL // http://…/plugins
WP_PLUGIN_DIR // /var/…/plugins
・使用中のテーマ
get_template_directory_uri() // http://…/theme/xx
get_template_directory() // /var/…/theme/xx
・wp-content
content_url() // http://…/wp-content
WP_CONTENT_DIR // /var/…/wp-content
・画像URLからDIR変換
$pctdir=str_replace(content_url(), WP_CONTENT_DIR,$pcturl);
・パス名分解
$pathData = pathinfo($file);
echo $pathData["dirname"]; // /var/~
echo $pathData["filename"]; // xxx
echo $pathData["extension"]; // txt
echo $pathData["basename"]; // xxx.txt
・画像サイズ
list($width,$height) = getimagesize($url);
if(has_post_thumbnail()){
$thumbnail_id = get_post_thumbnail_id();
$thumbnail_img = wp_get_attachment_image_src( $thumbnail_id , ‘full’ );
$src = $image[0]; //url
$width = $image[1]; //横幅
$height = $image[2]; //高さ
・画像サイズ比率
list($src_w,$src_h) = getimagesize($file);
$dst_w = 600;$dst_h = 0;
$dst_h = ($dst_w!=0)?(intval(($src_h*$dst_w)/$src_w )):(($dst_h!=0)?(intval(($src_w*$dst_h)/$src_h)):0);
・疑似要素順
link visited hover active


特殊文字
シングルクォート : &#39;
ダブルクォート : &quot;
WP設定内表示前処理(htmlタグ許可項目)
$str = str_replace(‘<','&lt;' ,$str);
$str = str_replace(‘>’,’&gt;’ ,$str);
$str = str_replace(‘\”‘,’&quot;’,$str);
$str = str_replace(“\'”,’&#39;’ ,$str);
WO設定項目表示前処理(htmlタグ許可項目)
$str = str_replace(‘\”‘,'”‘,$str);
$str = str_replace(“\'”,”‘”,$str);
・テーマ
get_theme_root_uri()
get_theme_root()
・WP 情報
get_bloginfo( $show )
・Wp config FTP 情報 設置
define( ‘FTP_HOST’, ‘host’ );
define( ‘FTP_USER’, ‘id’ );
define( ‘FTP_PASS’, ‘pw’ );
define( ‘FTP_SSL’, false );
弾に使う
placeholder:ユーザー入力補助

カテゴリー

MW WP FORM のフックが効かない。

MW WP FORM のフックが効かない。 MW WP FORM のフックが効かない。MW WP FORM は、各種フックがあってカスタマイズが便利~とか言われているプラグインですが。。。マニュアルにはあるのにフックが効かないフックがかなりある

MW WP FORM のショートコードで出力される内容をカスタマイズする。

MW WP FORM のショートコードで出力される内容をカスタマイズする。 MW WP FORM のショートコードで出力される内容をカスタマイズしたくなりました。非表示フィールド type=”hidden” にデータをためておいて、それをメール送信する

WelCart 買い物かごのカスタマイズ、テンプレートファイルの場所

WelCart 買い物かごのカスタマイズ、テンプレートファイルの場所 WelCart 買い物かごのカスタマイズするとき、毎回テンプレートファイルを探すのでメモしておきます。WelCart 買い物かごのカスタマイズ、テンプレートファイルの場所WelCart 買い物かごのカ

WelCart で投稿ページに商品購入欄を作る

WelCart で投稿ページに商品購入欄を作る WelCart の商品ページは、ご存知んごとくウルトラダサい。これをカスタマイズしないとなんとも素人っぽさの抜けないサイトになってしまう。WelCart で投稿ページに商品購入欄を作るときのモジュール

FB 広告 最適化~グーグルアナリティクスとサーチコンソールの連動のさせかた(必要な分だけ)

FB 広告 最適化~グーグルアナリティクスとサーチコンソールの連動のさせかた(必要な分だけ) FB 広告 最適化にあたって必要になってくるツールがグーグルアナリティクスとサーチコンソール。別にグーグルのアナリティクス、サーチコンソールでなくてもアクセス解析はできるんだけど、グーグルはユーザー囲

FB 広告 最適化~グーグルアナリティクスの使い方(必要な分だけ)

FB 広告 最適化~グーグルアナリティクスの使い方(必要な分だけ) FB 広告 最適化にあたって必要になってくるツールがグーグルアナリティクス。別にグーグルのアナリティクスでなくてもアクセス解析はできるんだけど、グーグルはユーザー囲い込みの為他のアクセス解析では見せな