thumbnail
thumbnail

Wordpressの管理画面にページとフィールドを追加する方法

updated 2021-9-29

新しいページを追加する方法

<?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_optionget_optionした値を表示してくれる関数です

セクションとフィールドの表示

settings_fieldsdo_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"];

参考

add menu page
管理メニューの追加
add settings field
設定ページの作成