短代码是在输出内容时解析的,所以问题可能是其他脚本总是首先包含,因为钩子wp_head()
在WP访问任何内容之前调用。
您可以在wp_enqueue_scripts
钩子,如果您可以找到一个查询条件来隔离希望脚本排队的位置:
<?php
add_action(\'wp_enqueue_scripts\', \'wpse_first_enqueue\', 1);
function wpse_first_enqueue() {
// Only enqueue on your desired condition
// In this example, only on individual Posts
if(is_singular(\'post\')) {
wp_enqueue_script(\'another-custom-script\', plugin_dir_url( __FILE__ ) . \'/another-custom-script.js\');
}
}
?>
如果您计划分发插件,并且没有一个查询条件可以始终清楚地隔离脚本需要触发的位置,那么您可以考虑始终在前端以这种低优先级将其排队。您仍然可以让用户输入一个创建div的短代码,然后在JS中,如果内容中存在该div,则启动您的功能。(如果div不存在,请不要开火。)
或者,如果您只是将其用于自己的站点,并且所有JS文件都已正确排队,那么您可以将所有脚本出列,然后将所有依赖项重新排队。您不能说“先让这个脚本排队”,但可以说“确保在下一个脚本排队之前让脚本A排队。”缺点是您需要在每个前端页面上将脚本排队,但您可以再次设置一个等待条件,只有当有人在该页面上使用插件时才会触发。
<?php
add_action(\'wp_enqueue_scripts\', \'wpse_dequeue_and_re_enqueue\', 1);
function wpse_dequeue_and_re_enqueue() {
// Step 1: Dequeue jQuery
wp_dequeue_script(\'jquery\');
// (continue dequeueing all JS scripts)
// Step 2: Enqueue your script
wp_enqueue_script(\'another-custom-script\', plugin_dir_url( __FILE__ ) . \'/another-custom-script.js\');
// Step 3: Re-enqueue everything, with your script as dependency
wp_enqueue_script(\'jquery\', \'/wp-includes/js/jquery/jquery.js\', array(\'another-custom-script\');
// (continue re-enqueueing all scripts)
}
?>
您需要小心顺序和依赖关系,维护起来可能会很乏味,但这将保证(在当前主题和插件集的情况下)您的脚本总是包含在其他内容之前。