Wordpressの管理画面にページとフィールドを追加する方法
新しいページを追加する方法
<?php
// ページの追加
add_action( 'admin_menu', 'register_manual_page' );
function register_manual_page() {
add_menu_page('管理画面の使い方', 'マニュアル', 'manage_options', 'manual', 'add_manual_page', 'dashicons-book', 3);
}
// ページの中身のHTML
function add_manual_page() {
?>
<div>
<h1>マニュアル</h1>
</div>
<?php
}
それぞれの項目と詳細
add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position );
項目 | 初期値 | 詳細 |
---|---|---|
$page_title | なし | (文字列) (必須) メニューが選択されたとき、ページのタイトルタグに表示されるテキスト。 |
$menu_title | なし | (文字列) (必須) メニューとして表示されるテキスト |
$capability | なし | (文字列) (必須) メニューを表示するために必要な権限。注:ユーザーレベルは非推奨ですので使用しないでください。 |
$menu_slug | なし | (文字列) (必須) メニューのスラッグ名。一意であり、小文字の英数字、ダッシュ、下線のみを含む必要があります。これは sanitize_key() /en と互換の文字セットです。 |
$function | '' | (文字列) (オプション) メニューページを表示する際に実行される関数 |
$icon_url | '' | (文字列) (オプション) メニューのアイコンを示す URL アイコン一覧 |
$position | - | (整数) (オプション) メニューが表示される位置。省略時はメニュー構造の最下部に表示されます。大きい数値ほど下に表示されます。 2 - ダッシュボード 4 - (セパレータ) 5 - 投稿 10 - メディア 15 - リンク 20 - 固定ページ 25 - コメント 59 - (セパレータ) 60 - 外観(テーマ) 65 - プラグイン 70 - ユーザー 75 - ツール 80 - 設定 99 - (セパレータ) |
サブメニューを追加する方法
<?php
// ページの追加
add_action('admin_menu', 'add_manual_submenu');
function add_manual_submenu() {
add_submenu_page('post-new.php', '投稿の使い方', 'マニュアル', 'manage_options', 'manual', 'add_manual_subpage');
}
// ページの中身のHTML
function add_manual_subpage() {
?>
<div>
<h1>マニュアルサブページ</h1>
</div>
<?php
}
それぞれの項目と詳細
add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function);
項目 | 詳細 |
---|---|
$parent_slug | 親メニューのスラッグ名。またはサブメニューを追加する先のトップレベルメニューを実装する標準 WordPress 管理ファイルのファイル名。またはサブメニューを追加する先のカスタムトップレベルメニューを実装するプラグインファイル ダッシュボード用: add_submenu_page('index.php',...) 投稿用: add_submenu_page('post-new.php',...) メディア用: add_submenu_page('upload.php',...) 固定ページ用: add_submenu_page('edit.php?post_type=page',...) コメント用: add_submenu_page('edit-comments.php',...) カスタム投稿タイプ用: add_submenu_page('edit.php?post_type=your_post_type',...) 外観用: add_submenu_page('themes.php',...) プラグイン用: add_submenu_page('plugins.php',...) ユーザ用: add_submenu_page('users.php',...) ツール用: add_submenu_page('tools.php',...) 設定用: add_submenu_page('options-general.php',...) |
$page_title | サブメニューが有効化された際にHTMLページタイトルに表示されるテキスト |
$menu_title | サブメニューの管理画面上での名前 |
$capability | ユーザーがこのメニュー表示する際に必要な権限 |
$menu_slug | 既存の WordPress メニューの場合、メニューページコンテンツ表示を処理する PHP ファイル。カスタムトップレベルメニューのサブメニューの場合、このサブメニューページの一意の識別子 |
$function | メニューページのコンテンツを表示する関数 |
既存のページに追加する関数
ダッシュボードに追加
add_dashboard_page( $page_title, $menu_title, $capability, $menu_slug, $function);
投稿に追加
add_posts_page( $page_title, $menu_title, $capability, $menu_slug, $function);
メディアに追加
add_media_page( $page_title, $menu_title, $capability, $menu_slug, $function);
固定ページに追加
add_pages_page( $page_title, $menu_title, $capability, $menu_slug, $function);
コメントに追加
add_comments_page( $page_title, $menu_title, $capability, $menu_slug, $function);
外観に追加
add_theme_page( $page_title, $menu_title, $capability, $menu_slug, $function);
ユーザーに追加
add_users_page( $page_title, $menu_title, $capability, $menu_slug, $function);
ツールに追加
add_management_page( $page_title, $menu_title, $capability, $menu_slug, $function);
設定に追加
add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function);
ページにセクションを追加する方法
add_settings_section
を使用します
セクションの追加
add_action( "admin_init", "add_manual_sections" );
function add_manual_sections() {
add_settings_section(
"manual-1", // section name
"マニュアル極意1",
"manual_one", // null is ok
"manual" // add this page
);
}
function manual_one() {
?>
<h2>マニュアル極意1</h2>
<?php
}
フィールドの追加
add_action( "admin_init", "add_manual_fields" );
function add_manual_fields() {
add_settings_field(
"field-1",
"フィールド1",
"field_one", // function's name
"manual", // page name
"manual-1" // section's name
);
register_setting(
"seo",
"field-1",
[
"sanitize_callback" => "esc_attr"
], // null is ok
);
add_option("google-analytics-id");
}
function field_one() {
if ($_REQUEST["google-analytics-id"]) {
update_option("google-analytics-id", $_REQUEST["google-analytics-id"]);
}
?>
<input name="field-1" type="text" id="field-1" value="<?php form_option('field-1') ?>">
<?php
}
form_option
はget_option
した値を表示してくれる関数です
セクションとフィールドの表示
settings_fields
とdo_settings_sections
を使います
function add_manual_subpage() {
?>
<div>
<h1>マニュアルサブページ</h1>
<form>
<?php
settings_fields("manual"); // page name
do_settings_sections("manual"); // page name
submit_button();
?>
</form>
</div>
<?php
}
フィールドの値を使用する方法
get_option
を使います
呼び出したい場所でregister_setting
で登録した名前で呼び出す
$manual_options = get_option("manual-1");
$field_one = manual_options["field-1"];