web-dev-qa-db-ja.com

プラグイン管理ページにメタボックスを追加するにはどうすればいいですか?

コードがあります。

 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は適切ではありません。

何が悪いの?

2
Joci93

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 } ?>
5
WordPress Mike