钩子函数 "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 钩子将其加入队列。
- 在WP主题的
assets/js
文件夹中,创建一个文件,例如my_functions.js
,代码如下:
function my_hello_world(text) {
console.log("Hello world!");
console.log(text);
}
- 在主题的
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!');
会产生所需的控制台输出。
详情请见:
- https://developer.wordpress.org/themes/basics/including-css-javascript/
- https://developer.wordpress.org/plugins/hooks/actions/
- 在https://developer.wordpress.org/reference/下查找对应的WP函数
如果需要服务器端PHP执行(特别是AJAX),需要实现JS和PHP代码之间更复杂的交互'the WordPress way';可以看看:
为了进一步开发中的调试目的,我正在尝试向 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 钩子将其加入队列。
- 在WP主题的
assets/js
文件夹中,创建一个文件,例如my_functions.js
,代码如下:
function my_hello_world(text) {
console.log("Hello world!");
console.log(text);
}
- 在主题的
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!');
会产生所需的控制台输出。
详情请见:
- https://developer.wordpress.org/themes/basics/including-css-javascript/
- https://developer.wordpress.org/plugins/hooks/actions/
- 在https://developer.wordpress.org/reference/下查找对应的WP函数
如果需要服务器端PHP执行(特别是AJAX),需要实现JS和PHP代码之间更复杂的交互'the WordPress way';可以看看: