是否将视频内容从上载子目录填充到页面?

时间:2013-09-20 作者:Joel

我昨天的问题在这个问题上过于宽泛,因此我将具体说明:

我教音乐课,在课程结束时,我们录制了几个简短的(30秒3分钟)视频,介绍人们正在学习的部分。到目前为止,我已经将所有这些视频直接上传到我的网络连接存储(NAS)中。我的学生可以进入那里。这对我来说很好,但对学生来说很难,因为他们需要手动下载每个视频,然后从电脑上播放。

我们学校有一个WordPress网站,我希望能够将学生发送到一个受密码保护的页面,在那里他们可以登录并显示几个文件夹(每首歌一个文件夹)。当他们打开文件夹时,会进入一个显示所有视频的页面,用户可以单击视频并直接从浏览器播放。

我下载了WordPress iPhone应用程序,并尝试:

创建页面

  • 从手机中选择视频上传到页面发布
  • 这类视频很管用,但其他视频都会给我上传错误(即我认为它们太大且超时),而且非常耗时。

    问题的一部分是WordPress如何处理库中上传的媒体,因为没有子文件夹,我看不出如何轻松地批量上传到特定页面。

    我下载了“Media File Manager”,但这不起作用,因为您必须先将文件上载到库中,然后手动将文件移动到子文件夹中。

    所以这里有一些细节。现在我的问题是:

    有没有办法:

    pp将单个视频加载到上载文件夹的子文件夹中(我可以用FTP创建子文件夹)(我已经知道如何操作。)

    1 个回复
    SO网友:brasofilo

    也许没有必要将文件添加到库中。我们只需扫描给定文件夹并打印<video> 标记我们找到的所有视频文件。

    如果需要密码,我会将订户帐户提供给用户,并在后端显示内容。在每个用户配置文件中,管理员可以select the folders that they\'ll have access to.

    下面是一个概念证明,假设:

    我们手动上传到内部的子文件夹wp-content/videos/.

    用户有权访问wp-content/videos/chapter1/wp-content/videos/chapter2/.

    一些solution is found 阻止外部访问此文件夹/文件。

    <?php 
    /* Plugin Name: Video Page for Subscribers */
    
    add_action( \'admin_menu\', \'admin_menu_wpse_114998\' );
    
    # Custom admin page
    function admin_menu_wpse_114998()
    {
        add_dashboard_page(
            \'Video Library\',
            \'Video Library\',
            \'read\', // visible to Subscribers
            \'video-library\',
            \'menu_callback_wpse_114998\'
        );
    }
    
    # Print the admin page
    function menu_callback_wpse_114998()
    {
        $paths = user_folders_wpse_114998( get_current_user_id() );
        foreach( $paths as $path )
            print_video_folder_wpse_114998( $path );
    }
    
    # Get the user\'s allowed folders
    function user_folders_wpse_114998( $user_id )
    {
        // $user_folders = do_your_thing_to_get_it();
        $user_folders = array( \'chapter1\', \'chapter2\' );
        return $user_folders;
    }
    
    # Iterate through a directory and print all MP4 videos
    function print_video_folder_wpse_114998( $folder )
    {
        $path = WP_CONTENT_DIR . \'/videos/\' . $folder;
        $files = array();
        $directory = new RecursiveDirectoryIterator( $path );
        $objects = new RecursiveIteratorIterator( $directory, RecursiveIteratorIterator::SELF_FIRST );
        foreach( $objects as $name => $fileinfo )
        {
            if ( !$fileinfo->isFile() ) 
                continue;
    
            if( false === strpos( $name,\'.mp4\' ) )
                continue;
    
            $files[] = array(
                \'url\' => WP_CONTENT_URL . "/videos/$folder/" . $fileinfo->getFilename(),
                \'name\' => $fileinfo->getFilename()
            );
        }
        foreach( $files as $file )
        {
            ?>  <div style="margin:25px 25%;background-color:#cecece;text-align:center">
                <h2><?php echo $file[\'name\']; ?></h2>
                <video src="<?php echo $file[\'url\']; ?>" controls>
                  Your browser does not support the <code>video</code> element.
                </video>
                </div>
            <?php
        }
    
    }
    

    enter image description here

    结束