在save_post
动作运行时,我也尝试使用admin_notices
行动,但它不起作用。我做错了什么?
如果我移动admin_notices
在构造函数中执行操作时,它可以正常工作(当然,它会显示管理中不需要的每个页面)。我想这一定是挂钩的逻辑顺序还是嵌套本身?
代码示例:
if (!class_exists(\'CPTToPDF\')) {
// FPDF library
require_once(plugin_dir_path(__FILE__) . \'fpdf182/fpdf.php\');
class CPTToPDF {
private $pdf;
public function __construct() {
add_action(\'save_post\', array($this, \'render_to_pdf\'));
}
public function render_to_pdf() {
//die(\'Render to PDF running...\');
$this->pdf = new FPDF();
add_action(\'admin_notices\', array($this, \'admin_notice__success\'));
}
public function admin_notice__success() {
//die(\'Admin notice running...\');
echo \'<div class="notice notice-success is-dismissable">CPTToPDF: Saved post.</div>\';
}
public function admin_notice__error() {
echo \'<div class="notice notice-error is-dismissable">CPTToPDF: Did not save post.</div>\';
}
}
}
我把最初的钩子放进save_post
在插件的构造函数方法中。这很好(如果我取消注释die(\'Render to PDF running...\');
它确实会消失并显示该消息,所以我知道我的回调工作正常。然而,第二个动作/钩子在render_to_pdf
回调:add_action(\'admin_notices\', array($this, \'admin_notice__success\'));
即使我取消注释die(\'Admin notice running...\');
保存帖子并重新加载新页面时,我没有收到任何输出(除了默认的“页面更新。查看页面”管理通知)。所以嵌套操作似乎不起作用,我不知道为什么。