【问题标题】:Wordpress force scripts to load after pluginsWordpress 强制脚本在插件后加载
【发布时间】:2014-11-12 23:20:38
【问题描述】:

我有一个自定义 js 文件作为我的 wordpress 安装的一部分,它像往常一样使用 functions.php 进行注册和排队。我已注册此特定脚本以在 wp_footer 中加载,而不是在 wp_header 中加载。但是,我也有一个将 js 放入 wp_footer 的插件,默认情况下它会在我的脚本下方加载它。我需要强制我的脚本最后加载。有没有什么简单的事情可以做到这一点?这对我来说似乎是相当常规的事情?

这是我的代码:

function scripts() {
// Register scripts
// js
wp_register_script('custom', get_bloginfo('template_url'). '/js/custom.js', false, false, true);

// Enqueue scripts
wp_enqueue_script('custom');
}

add_action('wp_enqueue_scripts', 'scripts');

脚本的当前顺序是,但我需要强制我的脚本在插件之后加载:

<script>/my_script.js</script>
<script>/plugin_script.js</script>

提前致谢!

【问题讨论】:

  • 您找到解决方案了吗?我有同样的问题。

标签: javascript wordpress plugins


【解决方案1】:

只需将$priority 参数设置为一个高得离谱的值:

add_action( 'wp_enqueue_scripts', 'scripts', 999999 );

要成为队列中的最后一个(尽管永远无法确定),请使用php's PHP_INT_MAX constant

add_action( 'wp_enqueue_scripts', 'scripts', PHP_INT_MAX );

编辑参见。 cmets 中的讨论。请注意,以下是不是在页脚中将脚本排入队列的推荐方式。

add_action( 'wp_print_footer_scripts', 'so26898556_print_footer_scripts', ( PHP_INT_MAX - 2 ) );
function so26898556_print_footer_scripts()
{
    echo '<script src="' . get_bloginfo( 'template_url' ) . '/js/custom.js"></script>';
}

【讨论】:

  • 不幸的是,这些都不起作用?我在阅读了 codex 而不是 PHP 后尝试了高优先级,但也尝试了,但没有?
  • 您能否检查该插件的源代码以查看包含的脚本是如何入队的?
  • 我觉得这很可疑?但是,我真的不想编辑插件文件,因为升级会覆盖,但是也许我们可以从中找出解决方法?
  • 函数 custom_footer_scripts($init_codes = null) { if(!$init_codes) { $init_codes = NewRoyalSliderMain::$sliders_init_code; } if(count($init_codes) > 0 ) { echo "\n”; } }
  • 你应该检查 custom_footer_scripts 被什么钩住了。可能是wp_print_scriptswp_footer?恐怕您必须使用与脚本插件相同的钩子,并将优先级设置为更高的数字。
猜你喜欢
  • 1970-01-01
  • 2018-07-20
  • 2014-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多