add_submenu_page
で作成したプラグインページがあります。そこに新しいセクションを追加したいのですが、何も起こりません:
add_submenu_page('parent', 'Foo', 'Foo', 'manage_options', 'foo-settings', 'anothercallback');
add_settings_section('foo-settings-section', 'Settings', 'acallback', 'foo-settings');
カスタムページでそれを使う正しい呼び出しは何ですか?完全な例はありますか?
add_settings_section()
関数は単純にWordPressを使ってフォームセクションを特定のスラッグに登録します。セクションとそれに追加したすべてのフィールドを特定のメニューページに表示するには、メニューのコールバックにdo_settings_sections($sections-slug)
メソッドを含める必要があります。これは、もちろん、add_settings_section
がその一部であるSettings APIを使用していると仮定しています。
例:
function plugin_admin_init() {
//All callbacks must be valid names of functions, even if provided functions are blank
register_setting( 'option_group', 'option_name', 'sanitize_callback' );
add_settings_section( 'section_id', 'section_title', 'section_callback', 'section_page_type' );
add_settings_field( 'field_id', 'field_title', 'field_callback', 'section_page_type', 'section_id' );
}
add_action( 'admin_init', 'plugin_admin_init' );
function add_menus() {
add_menu_page( 'menu_page_title', 'menu_title', 'menu_capability', 'menu_slug', 'menu_callback');
add_submenu_page( 'menu_slug', 'submenu_page_title', 'submenu_title', 'submenu_capability', 'submenu_slug', 'submenu_callback' );
}
add_action( 'admin_menu', 'add_menus' );
function submenu_callback() {
?>
<div class='wrap'>
<h2>Settings</h2>
<form method='post' action='options.php'>
<?php
/* 'option_group' must match 'option_group' from register_setting call */
settings_fields( 'option_group' );
do_settings_sections( 'section_page_type' );
?>
<p class='submit'>
<input name='submit' type='submit' id='submit' class='button-primary' value='<?php _e("Save Changes") ?>' />
</p>
</form>
</div>
<?php
}
すべてのパラメータ名を一意にしておくように最善を尽くしました。そのため、それらを区別してどこに移動するかを追跡できるようにする必要があります。 Settings APIはどこに行く必要があるのかについて非常に具体的になるので、あなたがそれをすべて持っていることを確認してください。また、この例ではすべてのコールバック関数を省略しましたが、実際には必要です。
add_submenu_page()
コールバックでこれがあなたの問題です:
settings_fields( 'option_group' );
do_settings_section( 'section_page_type' );
settings_fields()
の場合:
register_setting()
に渡した$optiongroup
パラメータを使う必要があります。do_settings_sections()
の場合:
do_settings_sections()
です、 not do_settings_section()
(複数形に注意してください)add_submenu_page()
に渡した$pageid
パラメータを渡す必要があります。ああ、決して気にしないで。私は他の誰かの答えに答えていましたが、それを実際のコールバック関数のマークアップと誤解しました。ここでの答えは当てはまるかもしれません。コールバックを含む完全なコードを見る必要があります。