web-dev-qa-db-fra.com

Comment ajouter une bulle de notification pour ma page de menu d'administration personnalisée

J'ai créé mon propre formulaire de contact et j'utilise WP_List_Table pour afficher les formulaires soumis dans wp-admin. J'ai édité this example WP_List_Table à partir de github et cela fonctionne bien.

Voici comment j'ajoute ma page de menu d'administration personnalisée:

function contact_form_create() {
    add_menu_page('Contact Forms', 'Contact Forms', 'administrator', 'contact-form', 'contact_form_page_handler');
}

add_action('admin_menu', 'contact_form_create');

Mais maintenant je veux faire une notification. Ainsi, lorsque le visiteur envoie un formulaire de contact, mon tableau affiche une notification dans wp-admin comme suit:

3
bilimokur

OK, donc ça n'a rien à voir avec WP_List_Table, pour être précis. Tout ce que vous avez à faire est d’ajouter des informations supplémentaires lors de l’enregistrement de votre page d’administrateur personnalisée.

WordPress utilise deux classes pour afficher ces bulles de notification:

  • plugins de mise à jour
  • en attente de mod

Vos notifications n’ont rien à voir avec les plugins, il sera donc plus agréable d’utiliser la deuxième classe. Vous devriez changer votre fonction comme ceci:

function contact_form_create() {
    $notification_count = 2; // <- here you should get correct count of forms submitted since last visit

    add_menu_page(
        'Contact Forms',
        $notification_count ? sprintf('Contact Forms <span class="awaiting-mod">%d</span>', $notification_count) : 'Contact Forms',
        'administrator', // <- it would be nicer to use capability in here 'manage_options' 
        'contact-form',
        'contact_form_page_handler'
    );
}

add_action('admin_menu', 'contact_form_create');

Donc, le principal changement est que s'il y a des notifications à afficher, alors nous ajoutons <span class="awaiting-mod">%d</span> au titre de cette page.

Il ne vous reste plus qu'à obtenir le nombre correct de formulaires soumis depuis la dernière visite. La méthode la plus simple consiste à stocker le dernier ID de l'enregistrement de formulaire soumis dans votre table de base de données personnalisée et à compter les nouveaux enregistrements en fonction de cet ID. Mais il est difficile de dire exactement comment les compter, étant donné que je n'ai aucune information sur la façon dont vous stockez les formulaires soumis, etc., je vous laisse donc cette partie.

5
Krzysiek Dróżdż