web-dev-qa-db-ja.com

特定の管理者ページにのみ通知を印刷する方法を教えてください。

私は通知を印刷するプラグインを書いていますが、それはメディアページだけです。 admin_noticesall_admin_noticesアクションが見つかりましたが、これらはすべての管理ページで起動されます。どの管理ページがコールバック内から呼び出されているフックであるかを見つける方法はありますか?

4
Yi Jiang

WP Admin内で使用するための $ pagenow というグローバル変数があります。

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

6
Sven

別の方法は 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']);
  }
}

Codexの 'admin_notices'フックドキュメントを参照してください

1
gmazzap