WordPressプラグイン 独自プラグインでメニューを追加する

目次

メニュー追加の関数

WordPressの管理画面にメニューを追加する関数は add_menu_page() です。

メニューを表示する関数、クリックされた際に表示されるページの関数、管理画面表示時に追加メニューを呼び出す関数の3つが必要です。
add_menu_pageはメニューを表示させる関数内に記述します。

メニューを表示する関数

function custom_admin_menu_action() {
add_menu_page(
‘Custom Menu’, // メニュータイトル
‘Custom Menu’, // メニューページのタイトル
‘manage_options’, // 必要な権限
‘custom-menu’, // メニュースラッグ(一意である必要があります)
‘custom_menu_page’ // メニューページの内容を表示する関数
);
}

メニューをクリックした際にページを表示する関数

function custom_menu_page() {
// メニューページの内容を記述する
echo ‘Custom Menu Page’;
}

管理画面表示時に追加メニューを呼び出す関数

add_action(‘admin_menu’, ‘custom_admin_menu_action’);

これでメニューが追加されました。
クリックするとcustom_menu_pageで記述している内容が表示されています。

メールメニューを追加

今回は「メール」というメニューにさらにサブメニューとして「 配信タスク」「 配信ログ」の3つを追加します。
関数名が他のプラグインと被らないように、NecosukeCMSの略称としてNecoを追加するルールにします。


function NECO_custom_admin_menu_action() {
    add_menu_page(
        'メール管理',        // メニュータイトル
        'メール管理',        // メニューページのタイトル
        'manage_options',     // 必要な権限
        'NECO_custom-menu_mail',        // メニュースラッグ(一意である必要があります)
        'NECO_custom_menu_page_mail'    // メニューページの内容を表示する関数
    );

    add_submenu_page(
        'NECO_custom-menu_mail',           // 親メニューページのスラッグ
        'メールタスク',          // メニュータイトル
        'メールタスク',          // メニューアイテム名
        'manage_options',        // 必要な権限
        'NECO_custom-menu_mail_task',        // メニュースラッグ(一意である必要があります)
        'NECO_custom_menu_page_mail_task'    // メニューページの内容を表示する関数
    );

	add_submenu_page(
        'NECO_custom-menu_mail',           // 親メニューページのスラッグ
        'メールログ',          // メニュータイトル
        'メールログ',          // メニューアイテム名
        'manage_options',        // 必要な権限
        'NECO_custom-menu_mail_log',        // メニュースラッグ(一意である必要があります)
        'NECO_custom_menu_page_mail_log'    // メニューページの内容を表示する関数
    );
}

function NECO_custom_menu_page_mail() {
    // メニューページの内容を記述する
    echo '<h1>メール管理</h1>';
}

function NECO_custom_menu_page_mail_task() {
    // メニューページの内容を記述する
    echo '<h1>メールタスク管理</h1>';
}

function NECO_custom_menu_page_mail_log() {
    // メニューページの内容を記述する
    echo '<h1>メールログ</h1>';
}

add_action('admin_menu', 'NECO_custom_admin_menu_action');

無事にメニューが追加されました。

既存のメニューにサブメニューを追加する

今回はさらに「ユーザー」のサブメニューとして「属性設定」「拡張一覧」とContactForm7が生成した「お問い合わせ」のサブメニューに「会員属性連携」を追加します。

調べてみるとユーザーメニューのスラッグはusers.php、ContactForm7メニューのスラッグは「wpcf7」でした。

サブメニューの表示を追加します。

    add_submenu_page(
        'wpcf7',           // 親メニューページのスラッグ
        '会員属性連携',          // メニュータイトル
        '会員属性連携',          // メニューアイテム名
        'manage_options',        // 必要な権限
        'NECO_custom-menu_wpcf7_user',        // メニュースラッグ(一意である必要があります)
        'NECO_custom_menu_page_wpcf7_user'    // メニューページの内容を表示する関数
    );
    add_submenu_page(
        'users.php',           // 親メニューページのスラッグ
        '属性設定',          // メニュータイトル
        '属性設定',          // メニューアイテム名
        'manage_options',        // 必要な権限
        'NECO_custom-menu_users_config',        // メニュースラッグ(一意である必要があります)
        'NECO_custom_menu_page_users_config'    // メニューページの内容を表示する関数
    );

    add_submenu_page(
        'users.php',           // 親メニューページのスラッグ
        '拡張一覧',          // メニュータイトル
        '拡張一覧',          // メニューアイテム名
        'manage_options',        // 必要な権限
        'NECO_custom-menu_users_list',        // メニュースラッグ(一意である必要があります)
        'NECO_custom_menu_page_users_list'    // メニューページの内容を表示する関数
    );

クリックされた際に呼び出される関数も定義します。

function NECO_custom_menu_page_wpcf7_user() {
    // メニューページの内容を記述する
    echo '<h1>会員属性連携</h1>';
}
function NECO_custom_menu_page_users_config() {
    // メニューページの内容を記述する
    echo '<h1>属性設定</h1>';
}
function NECO_custom_menu_page_users_list() {
    // メニューページの内容を記述する
    echo '<h1>属性会員一覧</h1>';
}

これでメニューが完成しました。
アイコンの設定やメニューの配置場所の設定など細かな設定もできますが、今日はここまでです。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

株式会社ねこすけの代表をしています。
2005年に創業しWebマーケティングを実践するためのコンサルティング、サイト構築、サイト運用、システム開発を行っています。
会員・顧客属性を利用したコンテンツ管理を得意としており、協会サイト、多ブランドのECサイト、会員向けコンテンツサイトなどを構築運営しています。Webマーケティングを進めてるのにパートナーがほしいと感じている方、ご相談ください。
月に1度のミーティングから細かなサイト保守まで必要な部分での対応が可能です。 問い合わせ

目次