过去 2 天我搜索了 StackOverflow,但没有找到解决方案。我正在尝试做一些非常基本的事情,但 WordPress 让我把头发拉了出来。
我有一个名为“test.js”的 JavaScript 文件,它位于我的子主题文件夹中一个名为脚本的文件夹中。该文件具有以下代码:
function myFunc() {
alert('hi');
}
我遵循了在 Wordpress 中加载 JavaScript 的最佳实践,并且在我的子主题文件夹中的 functions.php 文件中包含了以下函数。
function add_my_script() {
wp_enqueue_script('my-script', get_stylesheet_directory_uri().'/scripts/test.js', array('jquery'), '1.0', true); }
add_action('init', 'add_my_script');
注意:get_stylesheet 用于获取子主题目录,因为这是我的 style.css 所在的位置,它根据 Wordpress 的子主题规则覆盖我的父主题中的 style.css。
现在,在这样做之后,我希望可以访问我的 test.js 文件中的函数 myFunc() 。因此,在我的 function.php 文件中,我有一个函数 TestmyFunc() 执行以下操作:
function TestmyFunc()
{
echo 'Click the button below';
echo '<button onclick="myFunc()">Click Me</button>';
}
加载某个页面时,会在 Wordpress 中调用函数 TestmyFunc()。页面加载完美,打印输出“单击下面的按钮”,并且显示“单击我”的按钮也在那里。现在这是令人沮丧的部分,无论我做什么,单击按钮都无法响应。绝对没有。
我的第一个想法是 JavaScript 没有加载,我的 wp_enqueue_script 代码有问题。然而,这不是问题。
我尝试了以下更改。首先,我将 test.js 文件修改为这一行:
alert('hi');
然后我只是在我的functions.php文件中编写了以下函数:
function run_my_script() {
wp_enqueue_script('my-script', get_stylesheet_directory_uri().'/scripts/test.js', array('jquery'), '1.0', true);
}
add_action('init', 'add_my_script');
然后将 run_my_script 设置为以与加载 TestmyFunc() 相同的方式加载到我的页面中。这似乎工作正常,当我在 WordPress 中的页面加载 run_my_script() 函数时,我会在页面加载后立即收到一个警告框,显示“嗨”。显然这不是我想要的,因为我希望它仅在单击按钮时显示,这需要从 test.js 文件调用的函数,而不仅仅是运行 test.js 脚本。
所以看起来我调用 JavaScript 函数的方式可能有问题?如果有人能以任何方式提供帮助,那就太好了。
我根本无法使用 wp_enqueue_script 获得一个调用的 JavaSript 函数,它唯一的工作是当我按照本教程http://lorelle.wordpress.com/2005/09以老式/非 WordPress 推荐的方式加载我的脚本时/16/使用-javascript-in-wordpress/
这涉及在 header.php 中包含此内容:
<script src="<?php echo get_stylesheet_directory_uri(); ?>/scripts/test.js" type="text/javascript"></script>
然后调用functions.php中的函数
echo'
<script type="text/javascript">
<!--
myFunc();
//--></script>';
这有效并且 myFunc() 按调用运行。但是,我不想编辑我的 header.php 文件,而是更喜欢使用最佳实践 wp_enqueue_script 方法。
我真的希望有人能提供帮助,因为在过去的 48 小时里我几乎没有睡过觉,尽了一切可能,最终完全沮丧。