更改MediaElement.js设置的筛选器

时间:2014-03-27 作者:EHerman

我正在尝试更改MediaElement加载的一些设置。js。我似乎找不到过滤器或挂钩来更改加载的设置。我能够自定义设置的唯一方法是打开核心MediaElement。js文件并更改其中的设置。

显然,这并不理想,因为我不得不编辑一个核心WordPress文件,该文件将在更新时被覆盖。如何使用过滤器更改设置,以免丢失设置?

我正在试着设置

enableKeyboard: false

2 个回复
最合适的回答,由SO网友:Emyr Thomas 整理而成

复制wp-includes/js/mediaelement/wp-mediaelement.js 并在主题或插件中进行修改。例如,我添加了一些设置,以强制在iOS上使用本机视频控件;Android设备,如:

(function ($) {
        // add mime-type aliases to MediaElement plugin support
        mejs.plugins.silverlight[0].types.push(\'video/x-ms-wmv\');
        mejs.plugins.silverlight[0].types.push(\'audio/x-ms-wma\');

        $(function () {
                var settings = {
                        // Put your custom MediaElement.js Player Options here...

                        alwaysShowControls: true,
                        // force iPad\'s native controls
                        iPadUseNativeControls: true,
                        // force iPhone\'s native controls
                        iPhoneUseNativeControls: true,
                        // force Android\'s native controls
                        AndroidUseNativeControls: true
                };

                if ( typeof _wpmejsSettings !== \'undefined\' )
                        settings.pluginPath = _wpmejsSettings.pluginPath;

                $(\'.wp-audio-shortcode, .wp-video-shortcode\').mediaelementplayer( settings );
        });

}(jQuery));
然后,您可以使用操作将原始版本出列,并将修改后的版本入列。如果在主题中执行此操作,请在函数中添加以下内容。php文件:

add_action( \'wp_enqueue_scripts\', \'my_mediaelement_settings\' );
function my_mediaelement_settings() {
        wp_deregister_script( \'wp-mediaelement\' );
        wp_register_script( \'wp-mediaelement\', get_stylesheet_directory_uri() . "/js/wp-mediaelement.js", array( \'mediaelement\' ), false, true );
}
这假设您将修改后的wp-mediaelement.js a中的文件js 主题中的目录。

SO网友:kubi

自WordPress 4.4以来,实际上有一个过滤器mejs_settings, 这正是你想要的。

在您的情况下:

add_filter(\'mejs_settings\', function ($settings) {
    $settings[\'enableKeyboard\'] = true;
    return $settings;
});

如果有人感兴趣,它的工作原理如下:wp-includes/script-loader.php 将其转换为内联<script><head> 设置全局JS对象_wpmejsSettings, 其中,在domReady, 传递给.mediaelementplayer() 中的函数wp-includes/js/mediaelement/wp-mediaelement.js.

结束

相关推荐

Failed to import Media

当我用[工具>导出]生成XML文件并在另一个WordPress网站上使用[工具>导入]时,我会得到每种附件帖子类型的“无法导入媒体”。而无法加载的图像是从前一台服务器热链接的,该服务器使用前一台服务器的传输。。。但是当我从http://codex.wordpress.org/Theme_Unit_Test 那么这个问题就不存在了。有些图像仍然“无法导入媒体”,但这只是30张图像中的5张。他们在XML中有指向自己服务器的URL,但不知何故,[工具>导入]设法下载媒体并用新位置替换这些URL