钩子函数 "is not defined"

Hooked function "is not defined"

为了进一步开发中的调试目的,我正在尝试向 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

好像我在某处漏掉了重点...你能给个提示吗?

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),需要实现JS和PHP代码之间更复杂的交互'the WordPress way';可以看看: