让我们看看admin_notices
, 因为这就是你的输出。
https://core.trac.wordpress.org/browser/tags/5.4/src/wp-admin/admin-header.php#L281
所以,它只是一个作为输出点的操作,这意味着如果您愿意,您可以在这里输出任何东西,最重要的是,这一切都发生在内存中,因此,调试应该非常简单;这个地方是用来输出东西的。就是这样。
除非您在该操作周围使用包装器,例如https://github.com/WPTRT/admin-notices 这允许您编写代码清理器(但仍使用admin_notices
内部动作),您将执行以下操作add_action( \'admin_notices\', function() { echo \'My notification!\' } )
。。。任何其他允许您推出这些通知的包也会如此。
了解以下变量:在内存、动作中,我们可以尝试查看其中发生了什么。你可以自己写action inspection engine
或者,您可以使用其他人的:
https://wordpress.org/plugins/query-monitor/
现在,如果我们要进入仪表板>打开查询监视器面板(位于顶部的粘性WP栏中)>访问“挂钩和操作”>搜索
admin_notices
, 我们将得到如下屏幕提示:
在这里,我们可以确切地看到与此操作相关的内容及其优先级,因此,让我们尝试复制您的问题。让我们创建一些空通知并输出它们:
add_action( \'admin_notices\', function() {
$class = \'notice notice-error\';
printf( \'<div class="%1$s"><p>%2$s</p></div>\', esc_attr( $class ), esc_html( \'\' ) );
printf( \'<div class="%1$s"><p>%2$s</p></div>\', esc_attr( $class ), esc_html( \'\' ) );
printf( \'<div class="%1$s"><p>%2$s</p></div>\', esc_attr( $class ), esc_html( \'\' ) );
printf( \'<div class="%1$s"><p>%2$s</p></div>\', esc_attr( $class ), esc_html( \'\' ) );
printf( \'<div class="%1$s"><p>%2$s</p></div>\', esc_attr( $class ), esc_html( \'\' ) );
}, 15 );
很好,现在让我们看看仪表板的外观:
噢。
It\'s broken, just like yours is. 但是图像告诉我们什么呢?嗯,它说在主题里面,从一个结尾开始,在
functions.php
在线
87
, 它正在尝试输出一些通知。
针对您的案例执行此操作,并尝试查看哪一个存在问题。
虽然有点超出范围,或者更确切地说,包括一个更大的范围,但有时我真的希望你能return value
一个钩子。您的案例是检查操作中的数据流如何不容易做到的主要示例,请不要误解我的意思,这仍然是可能的,但需要做大量的工作来处理所有事情,我中途放弃了。换句话说,如果说Hey, WordPress, on action \'admin_notices\', which one of the hooked functions returns an empty string or an error?
. 真的为你节省了很多时间。