Enqueueing TinyMCE

时间:2015-01-19 作者:myol

我决定将复制的javascript从多个自定义post类型文件拉到一个“admin”中。在所有管理页面中使用的min.js文件。到目前为止,我已经得到了要加载的脚本。这在我的脚本中。php(我使用根主题)

// Add the admin css
function custom_admin_style(){
        wp_register_style(\'admin_css\', get_template_directory_uri() . \'/assets/css/admin.min.css\');
        wp_register_script(\'admin_js\', get_template_directory_uri() . \'/assets/js/admin.min.js\');

        wp_enqueue_style(\'admin_css\');
        wp_enqueue_script(\'admin_js\');
}
add_action(\'admin_enqueue_scripts\', \'custom_admin_style\');
然而,这些脚本依赖于与WordPress捆绑在一起的TinyMCE JS插件,因此我假设这个脚本在TinyMCE JS插件之前被调用。在此之前加载TinyMCE插件或之后加载我的脚本的正确方法是什么?

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

您需要设置的第三个参数wp_register_script(), 这是依赖项参数,$deps.

在您的代码中,该值当前设置为false,实际上应该忽略该值或设置为空数组,array() 如果不需要。在您的情况下,您将使用希望使其依赖的脚本句柄来设置它。如果需要使其依赖于多个脚本,可以在此处添加多个句柄

wordpress附带的微型mce脚本的句柄是tiny_mce, 您可以尝试以下操作:

wp_register_script(\'admin_js\', get_template_directory_uri() . \'/assets/js/admin.min.js\', array( \'tiny_mce\' ) );
这将确保在加载tine mce脚本之前不会加载脚本。请注意,请确保句柄的名称是唯一的,因为如果有另一个脚本加载了相同的句柄,则会导致问题

编辑您现在面临的新问题是,微型mce脚本并没有加载到每个页面上,这就是它应该的样子。如果页面上不需要,则不应加载脚本和样式。

这是组合脚本的一个大问题,您现在很可能正在加载一些页面上不需要的脚本和样式。设置依赖项也不会起作用,因为正如您所看到的,在没有加载微型mce脚本的页面上,您的自定义脚本将不会加载。

实现这一点的唯一其他方法是删除依赖项,然后对您的操作使用优先级,类似这样

function custom_admin_style(){
        wp_register_style(\'admin_css\', get_template_directory_uri() . \'/assets/css/admin.min.css\');
        wp_register_script(\'admin_js\', get_template_directory_uri() . \'/assets/js/admin.min.js\');

        wp_enqueue_style(\'admin_css\');
        wp_enqueue_script(\'admin_js\');
}
add_action( \'admin_enqueue_scripts\', \'custom_admin_style\', PHP_INT_MAX );

结束

相关推荐