web-dev-qa-db-ja.com

カスタム管理者メニューページに通知バブルを追加する方法

私は私自身の連絡フォームを作成し、私はwp-adminで提出されたフォームを表示するためにWP_List_Tableを使用しています。 これ example WP_List_Tableを github から編集して、うまくいきます。

これが私のカスタム管理メニューページの追加方法です。

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

しかし今、私は通知をしたいのです。そのため、訪問者が連絡フォームを送信すると、私のテーブルにはwp-adminに次のような通知が表示されます。

3
bilimokur

正確には、WP_List_Tableとは関係ありません。あなたがする必要があるのはあなたのカスタム管理者ページの登録の間にいくつかの追加情報を追加することです。

これらの通知バブルを表示するためにWordPressによって使用される2つのクラスがあります。

  • 更新プラグイン
  • 待っているmod

あなたの通知はプラグインとは何の関係もないので、2番目のクラスを使う方が良いでしょう。あなたはこのようにあなたの機能を変えるべきです:

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

したがって、主な変更点は、表示する通知がある場合は、そのページのタイトルに<span class="awaiting-mod">%d</span>を追加することです。

今しなければならないのは、前回の訪問以降に正しい数のフォーム送信を取得することだけです。これを行う最も簡単な方法は、サブミットされたフォームレコードの最後のIDをカスタムDBテーブルにオプションとして格納し、このIDに基づいて新しいレコードをカウントすることです。しかし、あなたがこの提出されたフォームなどをどのように格納するかについての情報がないので、正確にそれらを数える方法を言うのは難しいです。

5