問題描述

我正在嘗試更改 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。