Tabs

Tabs in the admin panel

Tabs in the admin panel

The WordPress SDK offers an easy way to make tabs. The above tabs, taken from ThreeWP Broadcast, consist of the following lines of code.

$tabs = $this->tabs();

$tabs->tab( 'settings' )
 ->callback_this( 'admin_menu_settings' )
 ->name( 'Settings' );

$tabs->tab( 'post_types' )
 ->callback_this( 'admin_menu_post_types' )
 ->name( 'Custom post types' );

$tabs->tab( 'maintenance' )
 ->callback_this( 'admin_menu_maintenance' )
 ->name( 'Maintenance' );

// How I usually handle editing of things
// I only display the edit tab if something is being edited.
if ( $tabs->get_is( 'edit' ) )
 {
   // Retrieve the id of the thing
   $id = intval( $_GET[ 'id' ] );
   // Check that the thing exists
   $thing = $this->get_thing( $id );
   if ( ! $thing )
    $this->wp_die( 'Thing ID does not exist.', $id );

   // And now create the tab, passing the ID and the thing as parameters to the callback.
   // This is so that the callback doesn't have to do double work and retrieve the thing again.
   $tabs->tab( 'edit' )
    ->callback_this( 'admin_menu_edit )
    ->name( 'Editing a thing' )
    ->parameters( $id, $thing );
 }

$tabs->tab( 'uninstall' )
 ->callback_this( 'admin_uninstall' )
 ->name( 'Uninstall' );

echo $tabs;

First the tabs class is instanciated.

Each line after that then creates a tab with a unique ID, settings, specifies which method to call, $this->admin_menu_settings(), and finally the name of the tab to display to the user.

Translation

To translate your tabs, your plugin must first load the languages.

$this->load_language();

Then use the following tab methods:

  • heading_() instead of heading()
  • name_() instead of name()
  • title_() instead of title()

More detailed documentation

For more details, see wordpress/tabs/tabs.php. There you can find information about:

  • Callback parameters
  • Default tab
  • Tab counts
  • Tab headings
  • Tab title

Querying the request string

 

Leave a Reply

Your email address will not be published. Required fields are marked *