我正在培训创建/修改wordpress插件,要做到这一点,我需要做一个简单的PHP脚本,执行不同的动作。问题是,一旦调用了do_action
,什么也不会发生。
<?php
[...]
$actions_to_do = [
'wp_ajax_lorem_ipsum'
];
foreach ($actions_to_do as $action) {
$output = do_action($action);
echo $output;
}
I've seen:
- 在do_action函数上使用输出缓冲区有任何缺点吗? WordPress:在变量中保存do_action的输出
我用ob_start()尝试了这个技巧,但问题仍然是一样的。
foreach ($actions_to_do as $action) {
ob_start();
do_action($action);
$output = ob_get_contents();
ob_end_clean();
echo $output;
}
我指定在这个状态下不使用插件进行测试因为无论插件还是操作
问题都是一样的将do_action()视为可能操作的占位符。下面是一个简单的例子来说明它:
<?php
// You can paste this in page.php, in header of footer, or any other place that would be easy to observe (for test purpose only!)
echo "Hello";
do_action( 'hello_name' );
echo "!";
?>
通过简单地放置这段代码并打开相应的页面,您将看到:
Hello!
当do_action()被执行时,没有与它相关联的操作。
现在,在不删除现有代码的情况下,将以下代码添加到functions.php文件中:<?php
/**
* We register a custom action which will be processed by
* WordPress when do_action( 'hello_name' ) is executed.
*/
function my_name_is() {
echo "Tom";
}
add_action( 'hello_name', 'my_name_is' );
?>
重新加载页面现在应该显示:
Hello Tom!
你可以注册多个动作,当do_action('hello_name')函数使用add_action()函数执行时触发。