構成ファイル
plugin
|- main.php
|- templates - subu1.php , subu2.php
|- assets - style.css
|- images - 画像ファイル
main.php
<?php
/*
Plugin Name: プラグインの名前
Description: プラグインの名前
Version: 1.1.1
Author: 製作者
*/
// 直接アクセスされた場合は終了
if (!defined('ABSPATH'))
exit;
// プラグインのファイルパスとURLを定義
define('MY_PLUGIN_NAME_PATH', plugin_dir_path(__FILE__));
define('MY_PLUGIN_NAME_URL', plugin_dir_url(__FILE__));
// ショートコードを使用して複数のテンプレートファイルを結合して表示するコード
function display_su_bmenu_contents() {
ob_start(); // バッファリングを開始
// 複数のテンプレートファイルを順番に結合して表示
include MY_PLUGIN_NAME_PATH . 'templates/subu1.php';
include MY_PLUGIN_NAME_PATH . 'templates/subu2.php';
return ob_get_clean(); // バッファの内容を取得して出力
}
add_shortcode('display_submenus', 'display_su_bmenu_contents');
// 管理画面メニューの追加とコンテンツの表示
function wp__add_menu()
{
add_menu_page(
'メニュー',// ページのタイトルタグ<title>に表示されるテキスト
'メニュー',// 左メニューとして表示されるテキスト
'manage_categories',// 必要な権限 manage_options:管理者のみ manage_categories:管理者+編集者
'wp_mainmenu',// メニューのスラッグ名 URLのパラメータ /wp_-admin/admin.php?page=wp__menu
'wp_mainmenu_page_contents',// メニューページを表示する際に実行される関数
'dashicons-menu',// プラグインのアイコン https://developer.wordpress.org/resource/dashicons/#menu
65// メニューが表示される位置のインデックス(0が先頭) 5=投稿,10=メディア,20=固定ページ,25=コメント,60=テーマ,65=プラグイン,70=ユーザー,75=ツール,80=設定
);
add_submenu_page(
'wp_mainmenu',// 親メニューのスラッグ
'サブメニュー1',// ページのタイトル
'サブメニュー1',// サブメニューに表示されるテキスト
'manage_categories',// 必要な権限
'wp_mainmenu',// ページのスラッグ(URLで使用)
'wp_mainmenu_page_contents', // ページのコンテンツを出力する関数
0
);
add_submenu_page(
'wp_mainmenu',
'サブメニュー2',
'サブメニュー2',
'manage_options',
'wp_subu2',
'wp_subu2_page_contents',
1
);
}
add_action('admin_menu', 'wp__add_menu');
// CSSファイルを読み込む
function wp_enqueue_styles()
{
wp_enqueue_style('wp-plugin-style', MY_PLUGIN_NAME_URL . 'assets/style.css');
}
add_action('admin_enqueue_scripts', 'wp_enqueue_styles');
// メニューページのコンテンツ表示
function wp_mainmenu_page_contents()
{
// メインメニューページのコンテンツ
include MY_PLUGIN_NAME_PATH . 'templates/subu1.php';
}
function wp_subu2_page_contents()
{
// サブメニューSNSのコンテンツ
include MY_PLUGIN_NAME_PATH . 'templates/subu2.php';
}