トップページ動画をランダムに表示させる


Warning: Undefined array key 1 in /home/slashd/slashd.com/public_html/blog/wp-content/themes/arkhe_child/functions.php on line 149

このホームページのトップに動画を配置することを決めてから、とても苦労することになりました。
動画の圧縮を行ってもなかなかデータ量が減らないのです。

そこで、動画を2つに分割し静止画とともに3パターンのトップページをランダムに表示することにしました。

動画の分割はQuickTime Player 7で簡単にできます。
その後は、このテーマのhead.phpを書き換えればOKです。

これで1度に読み込まれる動画の重さはほぼ半分になります。

vegasの設定をランダムに

WordPressテーマTCD「UNIQUE」の動画設定はfunctionsフォルダーの中のhead.phpにあります。

以下のようになっています。

<link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/js/vegas.min.css?ver=<?php echo version_num(); ?>">
<script src="<?php echo get_template_directory_uri(); ?>/js/vegas.min.js?ver=<?php echo version_num(); ?>"></script>
<script type="text/javascript">
jQuery(document).ready(function($){
  $("#header_video").vegas({
    timer: false,
    slides: [{
      <?php if($image) { ?>
      src: '<?php echo esc_attr($image[0]); ?>',
      <?php }; ?>
      video: { src: ['<?php echo esc_attr($video); ?>'], loop: true, mute: true }
    }]
  });
});
</script>

この部分にランダム変数を発生させて3つのパターンの設定を配置します。

<link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/js/vegas.min.css?ver=<?php echo version_num(); ?>">
<script src="<?php echo get_template_directory_uri(); ?>/js/vegas.min.js?ver=<?php echo version_num(); ?>"></script>
<script type="text/javascript">
jQuery(document).ready(function($){
  var random = Math.round( Math.random()*1 ); //0〜1
  if (random) {
  	$("#header_video").vegas({
    	timer: false,
		slides: [{
		<?php if($image) { ?>
		src: '<?php echo esc_attr($image[0]); ?>',
		<?php }; ?>    
    	}]
  	});
  } else { //0のみ
	  var random2 = Math.round( Math.random()*3 );
	  if (random2) {
	  	$("#header_video").vegas({
	  		timer: false,
	  		slides: [{
	  		<?php if($image) { ?>
	  		src: '<?php echo esc_attr($image[0]); ?>',
	  		<?php }; ?>
	  		video: { src: ['<?php echo esc_attr($video); ?>'], preload: true, loop: true, mute: true }
    		}]
  		});
  	  } else {
	  	$("#header_video").vegas({
	  		timer: false,
	  		slides: [{
	  		<?php if($image) { ?>
	  		src: '<?php echo esc_attr($image[0]); ?>',
	  		<?php }; ?>
	  		video: { src: ['https://www.slashd.com/○○○.mp4'], preload: true, loop: true, mute: true }
    		}]
  		});
	  }
  }
});
</script>

Math.random()によって発生する変数をJavaScriptで判定すると0の場合のみがfalseの判定となります。

Math.round( Math.random()*3 )は0、1、2、3をランダムに発生させるので、もっとも表示したくない動画をfalse判定としました。
この動画については直接URL指定してあります。

静止画はvideo:を削除するだけです。

この結果、静止画と動画がほぼ半分の確立で表示されるはずです。
また、お楽しみ動画が一つあるといったロジックです。

ところが、一番出にくいはずの動画がよく表示されます。
ランダムなので、正確な確率でコントロール出来ませんでした。

……

head.phpのカスタマイズについては以下のページも参照して下さい。

by T.Y.