我如何 运行 来自 wordpress 子主题的外部 js 文件

How can I run external js file from child theme in wordpress

我正在使用 wordpress,我在子主题的根目录下的外部文件中有一些自定义 js。我想将这个 js 文件的引用写到 html 文档的最后,就在结束 body 标记之前。我首先尝试将引用硬编码到 footer.php 中。我验证了 html 源中对外部 js 文件的引用是正确的,但是 javascript 什么也没做,也没有在 firebug 中抛出任何错误。外部文件仅包含:

jQuery(document).ready(function(){
    alert('hello')
});

所以在谷歌搜索这个问题一段时间后,我发现我需要使用

wp_register_script

wp_enqueue_script

我找到了文档 here and here 但我不是很熟悉 php...

目前我已添加:

add_action('wp_enqueue_scripts', 'load_javascript_files');
function load_javascript_files() {
    wp_register_script('scripts', get_template_directory_uri() . 'wp-content/themes/maya_child/scripts.js', array('jquery'), true );
    wp_enqueue_script('scripts');
}

到我的子主题的 functions.php 文件。结果是对我的自定义脚本文件的引用根本没有在源代码中打印出来

我是不是漏掉了一步,还是搞砸了 php?我需要向 header.php 添加内容吗?或 footer.php?

可能是您 javascript 的路径导致了问题。 get_template_directory_uri() returns 主题的路径而不是站点的路径。此外,当您使用子主题时,此函数仍然是 returns 父主题的 uri - 因此它不是这里的最佳选择。

尝试 get_stylesheet_directory_uri():

add_action('wp_enqueue_scripts', 'load_javascript_files');
function load_javascript_files() {
    wp_register_script('scripts', get_stylesheet_directory_uri() . '/scripts.js', array('jquery'), null, true );
    wp_enqueue_script('scripts');
}

请注意,这些函数都没有 returns uri 的尾部斜杠,因此您需要在路径的其余部分之前添加它,例如。 '/scripts.js'