web-dev-qa-db-fra.com

Comment changer l'emplacement de l'avis administrateur en html sans utiliser Javascript?

J'ajoute un avis administrateur via la convention admin_notice hook dans mon plugin:

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' );

Comment puis-je contrôler où wordpress place l'avis administrateur, dans le html sur l'écran actuel, sans utiliser Javascript?

1
hitautodestruct

J'ai découvert par accident récemment que tous les avis seront déplacés après le premier <h2> tag sur la page à l'intérieur d'un <div class="wrap">. Cela vous donne un contrôle léger en ce que, par exemple, sur une page de paramètres de plugin, vous pouvez mettre un <h2></h2> tout en haut si vous souhaitez utiliser <h2>Plugin Title</h2> sans que cela gâche la mise en forme de l'affichage.

6
majick

Selon le Codex admin_notice fait ce qui suit:

Avis affichés en haut des pages d'administration. La fonction hook devrait faire écho à un message à afficher.

Cela signifie que vous ne pouvez pas les placer au bas ou au milieu de votre écran si vous utilisez le crochet. De plus, si vous placez un div avec l'avis de classe n'importe où dans vos pages d'administration, WP les scripts d'administration JS les placeront exactement là où se trouvent tous les autres avis; et ils se comporteront également comme des avis.

FYI: J'ai déjà testé cela avec une nouvelle installation. ;)

Mais

Si vous souhaitez afficher un admin_notice sur une page particulière, vous pouvez ajouter l'action dans un current_screen action:

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' );

Plus d'information:

2
iantsch

L'action admin_notices est appelé ou appliqué ne seule fois dans le fichier, admin-header.php sur la ligne 238, juste au début de la wpbody-content div, qui constitue le corps d'une page de tableau de bord. Par conséquent, il est impossible de modifier la position de l'avis administrateur sans utiliser JavaScript. Cependant, vous pouvez certainement créer vos propres divs notice aux positions ou emplacements que vous souhaitez, et manipuler leur visibilité.

Créez simplement la marque pour l'avis comme:

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

Vous pouvez maintenant contrôler sa visibilité en utilisant PHP. Cela signifie que lorsque vous redirigez un utilisateur vers cette page, ou soumettez un formulaire sur cette page, définissez simplement le message dans le div, et en utilisant un simple sinon, faites écho au div.

0
Rutwick Gangurde

J'ai eu le même problème et je l'ai résolu en m'assurant que toutes les balises de titre ci-dessus où je veux placer l'avis, il n'y a pas de <h2>.

Dans ce cas, je voulais afficher un avis de journal des erreurs sous le champ de saisie comme indiqué ci-dessous: enter image description here

Je l'ai résolu en introduisant une balise <h2> Vide juste en dessous du champ de saisie de l'e-mail et en changeant également la balise tabs en <h3> Au lieu de <h2>

0
NJENGAH