Saturn Tables builds on top of WordPress administration menus. WordPress menus defined with add_menu_page and add_submenu_page render pages using a callback and Saturn Tables mimics this functionality. However, Saturn Tables also allows for specifically designed callbacks to render list tables and input forms.
Saturn Tables uses an array added to a WordPress filter to pass values to add_menu_page and add_submenu_page with types menu and submenu. In addition, list tables and input forms can be rendered with types list_table and input_form.
You can read more about administration menus at https://codex.wordpress.org/Adding_Administration_Menus
This function which defines menu values is hooked to the saturn_tables_menu filter. Remember to add type (menu, submenu, list_table, input_form) to the standard WordPress administration menu parameters.
Here are the menus in the sample “Cars” dataset and code base.
add_filter( 'saturn_tables_menus', 'saturn_tables_menus_cars', 10, 1 );
function saturn_tables_menus_cars( $saturn_tables_menus ) {
$saturn_tables_menus[]= array (
'type' => 'list_table',
'page_title' => __( 'Cars' ),
'menu_title' => __( 'Cars' ),
'capability' => 'edit_posts',
'menu_slug' => 'saturn-tables-cars-table',
'callable' => 'saturn_tables_cars_list_table_func',
'icon_url' => '',
'position' => '40'
);
$saturn_tables_menus[] = array(
'type' => 'input_form',
'parent_slug' => 'saturn-tables-cars-table',
'page_title' => __( 'Add Car' ),
'menu_title' => __( 'Add Car' ),
'capability' => 'edit_posts',
'menu_slug' => 'saturn-tables-cars-add-edit-car',
'callable' => 'saturn_tables_cars_add_edit_car_func');
$saturn_tables_menus[] = array(
'type' => 'submenu',
'parent_slug' => 'saturn-tables-cars-table',
'page_title' => __( 'Cars Import' ),
'menu_title' => __( 'Cars Import' ),
'capability' => 'edit_posts',
'menu_slug' => 'saturn-tables-cars-import-export',
'callable' => 'saturn_tables_cars_import_export_func');
return $saturn_tables_menus;
}