【问题标题】:wrong enqueue script order in wordpress child themewordpress子主题中错误的入队脚本顺序
【发布时间】:2014-07-23 09:28:41
【问题描述】:

我正在尝试将我的脚本排入 wordpress 的子主题中,但我在 Jquery 之前加载了它,即使我已经指定了 Jquery 依赖项。

代码:

add_action( 'wp_enqueue_scripts', 'child_theme_scripts' );
function child_theme_scripts(){    
    wp_enqueue_script( 'dynamic-menu-script', get_stylesheet_directory_uri() . '/js/dynamic-menu.js', array( 'jquery' ) );
}

无论我做什么(我尝试先注册,然后在 jquery 之后在数组中指定我的脚本,我尝试指定在页脚中加载脚本,我尝试在外部将 JQuery 排入队列)我的脚本在查询抛出我之前加载“ReferenceError:找不到变量:JQuery”我检查过 JQ 是否正确加载,但在我的脚本之后。

这件事快把我逼疯了,请帮帮我……

【问题讨论】:

  • 您确定 jQuery 依赖项没有被更改为您的父主题中的另一个句柄吗?
  • 这是一个来自父主题的示例队列 wp_enqueue_script( 'theme-methods', get_template_directory_uri() . '/js/methods.js', array( 'jquery' ), '', true );

标签: javascript php jquery wordpress


【解决方案1】:

您可以使用优先级参数改进脚本加载的顺序。默认优先级为 10,因此您可以将其设置为 11。

add_action( 'wp_enqueue_scripts', 'child_theme_scripts', 11 );

这是一个简单的辅助函数,它向您展示了哪些函数被分配给了您想要使用的钩子。

function print_filters_for( $hook = '' ) {
  global $wp_filter;
  if( empty( $hook ) || !isset( $wp_filter[$hook] ) )
    return;

  print '<pre>';
  print_r( $wp_filter[$hook] );
  print '</pre>';
}

您可以使用print_filters_for( 'wp_enqueue_scripts' );在模板中的任何位置调用它

【讨论】:

  • 这是一个完美的解决方案!但仍然不起作用,此时我想父主题中一定有问题......
  • 也许你可以把 HTML 的输出给我们?
  • 好的,我检查了它可能是缓存问题,现在它可以工作了!谢谢!
  • 我还强制脚本加载到页脚而不是页眉
【解决方案2】:

除了@sirBlond,
在我的情况下,hook = '' 不起作用。

我改成:

function print_filters_for($hook)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多