我正在写一个插件,可以打印通知,但只能在媒体页面上。我找到了admin_notices
和all_admin_notices
操作,但这些操作会在所有管理页面上触发。是否有任何方法可以找到从回调中调用挂钩的管理页面?
如何仅在某些管理页面上打印通知?
2 个回复
最合适的回答,由SO网友:Sven 整理而成
有一个全局变量称为$pagenow 在WP Admin中使用:
global $pagenow;
if ( $pagenow == \'upload.php\' ) :
function custom_admin_notice() {
echo \'<div class="updated"><p>Updated!</p></div>\';
}
add_action( \'admin_notices\', \'custom_admin_notice\' );
endif;
更新:只需在主题或插件中包含代码片段functions.php
SO网友:gmazzap
另一种方法是使用load-{$page}
钩
示例:
add_action(\'load-edit.php\', \'maybe_edit_notice\'); // only on edit.php paged
function maybe_edit_notice() {
// some example notices based on the get variables
// the url should be something htt://example.com/wp-admin/edit.php?done=1&error=1
if ( isset($_GET[\'done\']) ) {
$message = isset($_GET[\'error\']) ? \'There was an error.\' : \'Everithing ok.\';
$class = isset($_GET[\'error\']) ? \'error\' : \'updated\';
global $my_notice_args;
$my_notice_args = compact(\'message\', \'class\');
add_action(\'admin_notices\', \'print_my_notice\');
}
}
function print_my_notice() {
global $my_notice_args;
if ( ! empty($my_notice_args) ) {
printf(\'<div class="%s"><p>%s</p></div>\', $my_args_notice[\'class\'], $my_args_notice[\'message\']);
}
}
请参见\'admin_notices\' hook docs 关于Codex结束