挂钩函数“未定义”

时间:2021-02-07 13:25:02

标签: wordpress hook add-action

为了进一步开发中的调试目的,我尝试向 WordPress 站点添加一个简单的功能并在 Firefox 控制台中执行它。

就像在 https://developer.wordpress.org/reference/functions/add_action/ 中一样,我放入了我的 OceanWP 主题的 functions.php

add_action( 'hello_world', 'hdt_hello_world' );

 function hdt_hello_world($text) {
    echo 'Hello World!';
    echo $text;
 }

重新加载页面并尝试从 Firefox 控制台执行,得到:

hello_world('Hi!');
Uncaught ReferenceError: hello_world is not defined
    <anonymous> debugger eval code:1

我好像在某处没说到点子上...你能给个提示吗?

1 个答案:

答案 0 :(得分:0)

Hamid Reza Yazdani 的提示有助于澄清:我基本上尝试在浏览器控制台中调用 PHP 函数 - 它不打算工作 - 并且不会工作 - 这样。

(希望如此)正确的方法是创建一个 JavaScript 函数并使用 WordPress 钩子将其加入队列。

  1. 在 WP 主题的 assets/js 文件夹中,创建一个文件,例如my_functions.js,使用以下代码:
function my_hello_world(text) {
   console.log("Hello world!");
   console.log(text);
}
  1. 在主题的 functions.php 文件中(不是更新安全的!),添加:
function my_functions_enqueue_script() {
    wp_enqueue_script( 'my_functions', get_template_directory_uri() . '/assets/js/my_functions.js', array ( 'jquery' ), 0.1, true);
}

add_action('wp_enqueue_scripts', 'my_functions_enqueue_script');

在浏览器控制台中执行 my_hello_world('Hi!'); 然后产生所需的控制台输出。

有关详细信息,请参阅:

如果需要服务器端 PHP 执行(尤其是 AJAX),则需要以“WordPress 方式”实现 JS 和 PHP 代码之间更复杂的交互;可以看看: