如何仅在某些管理页面上打印通知?

时间:2013-09-22 作者:Yi Jiang

我正在写一个插件,可以打印通知,但只能在媒体页面上。我找到了admin_noticesall_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

结束

相关推荐

Custom Post Row Actions

我偶然发现this question 在写这个问题的时候。我有一个问题是关于这个问题的。我发现你用的是get_delete_post_link 筛选为我的操作创建一个新的url(或一个类似的函数——在任何情况下,我都会将该函数与布尔值一起使用)。唯一的问题是,I don\'t know how to capture the event now. 考虑到我在谷歌上找不到很多关于行后操作的例子,我将不胜感激-/public function _wp_filter_get_delete_post_link( $