WP REST-视频和音频播放器

时间:2018-02-28 作者:Isu

我正在构建一个基于VUE JS的主题,并使用WP REST v2。有一个问题-我无法使视频和音频播放列表正常工作(内置WP核心功能)。我已经添加了:

wp_enqueue_style( \'wp-mediaelement\' );
wp_enqueue_script( \'wp-playlist\' );
但从那以后,我不知道如何让它起作用。

我就是做不到。当我将REST API中的内容插入DOM时,视频和音乐播放列表不起作用。

我有权访问WPPlaylistView 所以我也试着:

jQuery(".wp-playlist:not(:has(.mejs-container))").each(function() { return new WPPlaylistView({ el: this }); });

但我仍然得到了一个错误:“quot;Uncaught TypeError: Cannot read property \'replace\' of undefined"E;

有人知道如何处理这个问题吗?当页面加载后将播放器代码添加到DOM中时,如何使这些WordPress播放列表正常工作?

1 个回复
SO网友:squarecandy

遇到同样的问题,我在几个小时后找到了答案,几乎放弃了。这是一段代码,用来让自定义程序处理播放列表。从签出此评论/wp-includes/widgets/class-wp-widget-text.php:

    /**
     * Enqueue preview scripts.
     *
     * These scripts normally are enqueued just-in-time when a playlist shortcode is used.
     * However, in the customizer, a playlist shortcode may be used in a text widget and
     * dynamically added via selective refresh, so it is important to unconditionally enqueue them.
     *
     * @since 4.9.3
     */
    public function enqueue_preview_scripts() {
        require_once dirname( __DIR__ ) . \'/media.php\';

        wp_playlist_scripts( \'audio\' );
        wp_playlist_scripts( \'video\' );
    }
因此,这是在自定义程序中使用的,自定义程序也会在页面加载后动态加载HTML。如果我们想在前端做类似的事情,我们还需要在页面首次加载时加载这些东西。以下是我最终使用的代码:

function squarecandy_wp_enqueue_scripts() {
    wp_enqueue_script( \'wp-playlist\' );
    require_once get_home_path() . \'wp-includes/media.php\';
    wp_playlist_scripts( \'audio\' );
    wp_playlist_scripts( \'video\' );
}
add_action( \'wp_enqueue_scripts\', \'squarecandy_wp_enqueue_scripts\' );
轰!现在你可以跑步了wp.playlist.initialize() 在你的js中,任何时候都不会出错。

还有一件事需要注意:解决这个问题可能特别麻烦,因为如果您的页面在初始页面加载时自然包含播放列表,那么您可以在页面上加载其他播放列表HTML,然后运行wp.playlist.initialize() 一切都很顺利。只有当您的初始页面上没有播放列表(所以这个神秘的“即时”排队永远不会发生),然后您稍后尝试加载播放列表时,它才会失败。

结束

相关推荐

如何在网站页眉中显示javascript横幅?

我最近购买了一个主题,其中包括在标题中显示横幅的选项。横幅可以使用静态图像或javascript显示。我使用的特定javascript代码用于亚马逊横幅广告,并通过iframe显示在前端。使用静态图像,横幅将正确显示,如您在此处所见:http://capethemes.com/demo/portal/review/但是,使用javascript代码时,横幅不可见。在检查源代码时,我发现脚本标记和包含块的html都在那里,但缺少iframe元素。无论如何,我能够确定这是一个样式问题,但不确定如何解决它。以下