将do_action()存储在var中并继续执行



我正在培训创建/修改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()函数执行时触发。

最新更新