Creare una pagina di amministrazione personalizzata per custom post type + tassonomie + meta
Sto sviluppando un plugin che si basa su custom post type, una nuova tassonomia e alcuni campi personalizzati.
Tutti questi dati saranno privati (non interrogabili o ricercabili).
Vorrei fornire all'utente una pagina di amministrazione per aggiungere e modificare questi dati in modo più intuitivo.
Per esempio, il custom post type avrà solo un titolo e il campo excerpt, una tassonomia e i campi personalizzati.
So come aggiungere meta box a un custom post type, ma questo non è sufficiente per le mie esigenze.
Vorrei creare un'interfaccia HTML completamente personalizzata che si occupi di aggiungere/salvare/eliminare il custom post type e gestire la tassonomia e i meta.
Per essere chiaro, so già come scrivere un normale plugin e gestire le opzioni del plugin.
Non so come, con questo plugin, posso:
- Aggiungere una nuova voce di menu nel menu di amministrazione di WordPress
- In questa voce di menu, gestire, con un'interfaccia personalizzata, il custom post type
Esiste qualche guida là fuori che potrebbe aiutarmi a realizzare questo?

Ecco come può essere fatto:
add_action('admin_menu' , 'add_to_cpt_menu');
function add_to_cpt_menu() {
add_submenu_page('edit.php?post_type=nome_del_post_type', 'Admin Post Type Personalizzato', 'Impostazioni Personalizzate', 'edit_posts', basename(__FILE__), 'cpt_menu_function');
}

Dovrai iniziare a leggere sulle API per impostazioni e opzioni, per poi integrare i tuoi CPT e Tassonomie.
Ecco alcuni punti da cui iniziare:
Riferimento Classi/WP List Table « WordPress Codex
- Esempio Plugin Tabella Personalizzata - Un esempio pratico di WP_List_Table in forma di plugin
Menu di Amministrazione « WordPress Codex
- Plugin Editor Menu Admin - permette di aggiungere, eliminare, nascondere e riordinare elementi di amministrazione

http://codex.wordpress.org/Administration_Menus

Aggiungi menu e sottomenu come:
add_action('admin_menu', 'custom_plugin_menu');
function custom_plugin_menu() {
$page_title = 'Titolo Menu Principale';
$menu_title = 'Titolo Menu Principale';
$capability = 'manage_options';
$menu_slug = 'parent_menu_slug';
$function = 'whatever_for_main_page_function';
$icon_url = 'dashicons-admin-generic';
$position = 4;
add_menu_page($page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position);
$parent_slug = 'parent_menu_slug';
$page_title = 'Titolo Pagina Sottomenu';
$menu_title = 'Titolo Pagina Sottomenu';
$capability = 'manage_options';
$menu_slug = 'edit-tags.php?taxonomy=your_taxonomy_name&post_type=custom_post_type_name';
$function = null;
$position = null;
add_submenu_page($parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function, $position);
}
infine:
add_filter('parent_file', 'menu_highlight');
function menu_highlight($parent_file) {
global $plugin_page, $submenu_file, $post_type, $taxonomy;
if ('custom_post_type_name' == $post_type) {
if ($taxonomy == 'your_taxonomy_name') {
$plugin_page = 'edit-tags.php?taxonomy= your_taxonomy_name&post_type= custom_post_type_name'; // lo slug del sottomenu
$submenu_file = 'edit-tags.php?taxonomy= your_taxonomy_name&post_type= custom_post_type_name'; // lo slug del sottomenu
}
}
return $parent_file;
}
Spero di aver inserito tutto correttamente. Annida eventuali altri if all'interno del controllo della tassonomia e aggiungi lo stesso per altri tipi di post.
