web-dev-qa-db-ja.com

JavaScriptを使用せずにHTMLで管理者通知の場所を変更する方法

プラグインの従来のadmin_noticeフックを介して管理者通知を追加しています:

function my_admin_notice() { ?>
    <div class="notice notice-info is-dismissible">
        <p><?php _e( 'some message', 'my-text-domain' ); ?></p>
    </div>
    <?php
}

if ( my_plugin_show_admin_notice() )
  add_action( 'admin_notices', 'my_admin_notice' );

wordpressがJavascriptを使用せずに現在の画面のhtmlに管理者通知を配置する場所を制御するにはどうすればよいですか?

1
hitautodestruct

最近、偶然にすべての通知が_<h2>_内のページの最初の_<div class="wrap">_タグの後に移動されることがわかりました。これにより、いくつかのslightコントロールが提供されます。たとえば、プラグイン設定ページで、_<h2></h2>_を使用しない場合は、最上部に空の_<h2>Plugin Title</h2>_を配置できます。そこでディスプレイのフォーマットをめちゃくちゃにします。

6
majick

コーデックスによると、admin_noticeは次のことを行います。

管理ページの上部近くに表示される通知。フック関数は、表示されるメッセージをエコーする必要があります。

つまり、フックを使用する場合、画面の下部または中央に配置することはできません。さらに、クラス通知を含むdivを管理ページの任意の場所に配置すると、WP admin JSスクリプトは、他のすべての通知と同じ場所にそれらを配置します;それらも通知のように動作します。

参考までに、これはフレッシュインストールで既にテスト済みです。 ;)

だが

特定のページにadmin_noticeを表示する場合は、current_screenアクション内にアクションを追加できます。

function my_admin_notice() { ?>
    <div class="notice notice-info is-dismissible">
        <p><?php _e( 'some message', 'my_textdomain' ); ?></p>
    </div>
    <?php
}

function my_current_screen_example( $current_screen ) {
    // All your conditions go here, e.g. show notice @ post (not page) edit/new
    if ( 'post' == $current_screen->post_type && 'post' == $current_screen->base ) {
        add_action( 'admin_notices', 'my_admin_notice' );
    }
}

add_action( 'current_screen', 'my_current_screen_example' );

詳しくは:

2
iantsch

アクションadmin_noticesが呼び出されるか、適用されます1回のみファイル、admin-header.php、行番号238のwpbody-content divの先頭にあり、ダッシュボードページの本文。したがって、JavaScriptを使用せずに管理者通知の位置を変更する方法はありません。ただし、必要な位置または場所に独自のnotice divを確実に作成し、それらの可視性を操作することができます。

次のように通知のマークアップを作成します。

<div class="notice notice-info is-dismissible">
    <p>This is a notice.</p>
</div>

PHPを使用して可視性を制御できるようになりました。ユーザーをこのページにリダイレクトするとき、またはこのページでフォームを送信するときの意味は、divにメッセージを設定し、それ以外の場合はシンプルを使用して、divをエコーし​​ます。

0

私は同じ問題を抱えていて、_<h2>_がないことを通知を配置したい場所の上にあるすべての見出しタグを確認することで解決しました。

この場合、次のように入力フィールドの下にエラーログ通知を表示したいと思います。 enter image description here

メール入力フィールドのすぐ下に空の_<h2>_タグを導入し、タブタグを_<h3>_ではなく_<h2>_に変更することで解決しました

0
NJENGAH