问题描述

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

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

我想设定

enableKeyboard: false

最佳解决思路

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));

然后,您可以使用一个操作将原始文件排队并排列修改后的版本。如果您在主题中执行此操作,请将以下内容添加到 functions.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 文件放在主题中的 js 目录中。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。