谢谢你的否决票。不管怎样,我还是通过关机操作找到了答案。
其作用:
init操作清除所有输出缓冲区并启动一个新的输出缓冲区。Add\\u JS\\u短代码被添加到页面中,并为要显示的内容创建一个位置。API引用中的shutdown操作在PHP关闭执行之前运行。30秒后,它用$output的内容替换短代码的输出。
这样做的最终结果是在页面完全加载后,$输出“神奇地”出现。
我的目的是:用户输入URL在我的网站上进行检查。运行各种PHP脚本,检查Whois、获取标头、检查各种文件和目录、解析页面以获取详细信息。。。等等。我不希望最终用户在执行这些任务时盯着浏览器加载符号。这就解决了这个问题。
add_action(\'init\', array($this, \'Setup_Output_Buffer\'));
add_action(\'shutdown\', array($this, \'Shutdown_Callback\' ));
add_shortcode(\'Add_JS\', array($this, \'Add_JS_Shortcode\'));
public function Setup_Output_Buffer() {
$this->Clear_Buffers();
ob_start();
}
public function Clear_Buffers() {
$buffers = ob_get_status(true);
if (count($buffers) > 1) {
for ($i = 0; $i < count($buffers) - 1; $i++) {
ob_end_flush();
}
}
}
public function Add_JS_Shortcode($atts) {
$output = \'<div id="thisdivid"></div>\';
$output .= "<script>const tobeshownlater = document.querySelector(\'#thisdivid\');</script>";
return $output;
}
public function Shutdown_Callback() {
if (basename(get_permalink()) == \'pagewithshortcode\') {
sleep(30);
$output = "This is shown 30 sec after the page loads.";
echo \'<script>tobeshownlater.innerHTML = "<div>\' . $output . \'</div>";</script>\';
ob_flush();
flush();
}
}