我的WordPress安装目录中的“视频”目录中有很多视频。
他们都使用MediaElement.js插件玩得很好,但是也可以从这个目录播放随机剪辑吗?例如,使用指向目录(而不是特定视频)的短代码,例如
[video src="http://www.domain.com/wordpress/wp-content/video" random="true"]
那太棒了!
答案 0 :(得分:1)
这应该是可能的。
您可能想要做的是使用AJAX生成包含视频播放器的div。如果这样做,您可以非常轻松地删除/重新创建播放器。
之后您需要的是一个短代码定义,它将目录字符串值和布尔值提供给您附加到短代码处理程序的任何函数。
For Instance
$ defaultDirectory = site_url() + “/视频/”;
add_shortcode( 'video', 'videoDiv' );
function videoDiv( $shortcodeAttributeList )
{
extract( shortcode_atts( array(
'src' => $defaultDirectory,
'random' => true, /*set default values, use lowercase*/
), $shortcodeAttributeList ) );
if($random)
{
$numFiles=fileCounter($src);
$choice=rand(1, $numFiles);
}
$output='<div id="videoPlayer" class="player">';
// Continue by making a string which spans from <div> to </div>
return $output; //a div
}
同样来自http://php.net/manual/en/function.readdir.php
<?php
/**
* get the number of files within a given dir
*/
function fileCounter($dir){
$counter = 0;
if ($handle = opendir($dir)) {
//echo "Directory handle: $handle\n";
//echo "Files:\n";
/* This is the correct way to loop over the directory. */
while (false !== ($file = readdir($handle))) {
//echo "<BR>".$counter." - $file";
$counter++;
}
closedir($handle);
}
$counter -= 1; // in order to exclude '.' and '..', as well as start the counter on 1
return $counter;
}
/**
* get the filename in a giver dir, starting the first file with the index 1
*/
function fileNameByIndex($dir, $fileIndex){
$counter = 0;
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
$counter++;
if($counter - 2 == $fileIndex)
return $file;
}
closedir($handle);
}
return "";
}
}