プラグイン管理ページにメタボックスを追加するにはどうすればいいですか?
コードがあります。
add_action('admin_menu', 'test');
function test(){ add_menu_page( 'Test plugin', 'Test plugin',
'manage_options', 'test_plugin_options', 'test_plugin_admin_options'
); }
そしてadd_meta_boxコードがあります:
function inf_custome_box() {
add_meta_box( 'inf_meta', __( 'Meta Box Title', 'test' ), 'custome_box_callback', 'test_plugin_options' );
}
add_action( 'add_meta_boxes', 'inf_custome_box' );
function custome_box_callback() {
echo 'This is a meta box';
}
しかし、それはうまくいきません、meta_boxは適切ではありません。
何が悪いの?
add_meta_boxes
は投稿タイプにメタボックスを追加するためのものです。あなたが探しているのはSettings APIです。 add_menu_page
関数では、test_plugin_admin_options
という名前の関数を呼び出しています。この機能はあなたのオプションページの内容を保持します。設定をregister_setting()
に登録する必要もあります。
//add menu page
add_action('admin_menu', 'test');
function test(){
add_menu_page( 'Test plugin', 'Test plugin', 'manage_options', 'test_plugin_options', 'test_plugin_admin_options' );
}
//register settings
add_action( 'admin_init', 'register_test_plugin_settings' );
function register_test_plugin_settings() {
//register our settings
register_setting( 'test-plugin-settings-group', 'new_option_name' );
register_setting( 'test-plugin-settings-group', 'some_other_option' );
}
//create page content and options
function test_plugin_admin_options(){
?>
<h1>Test Plugin</h1>
<form method="post" action="options.php">
<?php settings_fields( 'test-plugin-settings-group' ); ?>
<?php do_settings_sections( 'test-plugin-settings-group' ); ?>
<table class="form-table">
<tr valign="top">
<th scope="row">New Option 1:</th>
<td><input type="text" name="new_option_name" value="<?php echo get_option( 'new_option_name' ); ?>"/></td>
</tr>
<tr valign="top">
<th scope="row">New Option 2:</th>
<td><input type="text" name="some_other_option" value="<?php echo get_option( 'some_other_option' ); ?>"/></td>
</tr>
</table>
<?php submit_button(); ?>
</form>
<?php } ?>