web-dev-qa-db-fra.com

Comment ajouter une boîte méta à la page d'administration du plugin?

Il y a les codes.

 add_action('admin_menu', 'test');

 function test(){       add_menu_page( 'Test plugin', 'Test plugin',
 'manage_options', 'test_plugin_options', 'test_plugin_admin_options'
 ); }

Et il y a le code 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';  
}

Mais ça ne marche pas, la meta_box n'est pas apparente.

Que puis-je faire de mal?

2
Joci93

add_meta_boxes permet d'ajouter des méta-boîtes aux types de publication. Ce que vous recherchez, c'est l'API Settings. Dans votre fonction add_menu_page, vous appelez une fonction nommée test_plugin_admin_options. Cette fonction tiendra le contenu de votre page d'options. Vous devrez également enregistrer vos paramètres avec 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