0

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

正如在https://developer.wordpress.org/reference/functions/add_action/中,我放入functions.php了我的 OceanWP 主题:

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

似乎我在某个地方错过了重点......你能给个提示吗?

4

1 回答 1

0

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

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

  1. assets/jsWP 主题的文件夹中,创建一个文件,例如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 代码之间更复杂的交互;可以看看:

于 2021-02-19T17:54:09.737 回答