Creare una pagina di amministrazione personalizzata per custom post type + tassonomie + meta

15 apr 2012, 20:59:20
Visualizzazioni: 26.2K
Voti: 11

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?

7
Commenti

Sarebbe apprezzato un motivo per il voto negativo

Andrea Sciamanna Andrea Sciamanna
15 apr 2012 23:13:33

dai un'occhiata a http://wordpress.org/extend/plugins/wp-user-frontend/

Bainternet Bainternet
16 apr 2012 09:43:18

Nainternet, sembra che non sia stato molto chiaro con la mia domanda. La aggiornerò di conseguenza.

Andrea Sciamanna Andrea Sciamanna
16 apr 2012 10:24:57

Ho suggerito quel plugin perché puoi usarlo per creare, aggiornare ed eliminare CPT, termini di tassonomia e campi personalizzati dal front-end, che è sostanzialmente ciò che desideri. Basta dare un'occhiata al suo codice.

Bainternet Bainternet
16 apr 2012 10:52:42

Bainternet, capisco il tuo punto di vista, ma dato che il mio è già un plugin, non voglio che gli utenti siano costretti a installare un altro plugin per far funzionare il mio. Ho bisogno di una soluzione che possa implementare all'interno del mio plugin. In realtà ciò di cui ho bisogno sono solo alcune linee guida che mi aiutino a ottenere questo risultato.

Andrea Sciamanna Andrea Sciamanna
16 apr 2012 14:20:32

Ancora una volta, l'idea era che tu guardassi il codice del plugin per vedere come viene fatto.

Bainternet Bainternet
16 apr 2012 20:42:47

Ancora una volta, Bainternet, sto cercando una "guida pratica", se esiste. Ci sono molti plugin là fuori che fanno quello di cui ho bisogno, ma ognuno lo fa in modo diverso. Preferisco invece attenermi a uno schema, uno standard o qualcosa di simile, come già faccio (per quanto possibile) quando scrivo un plugin o un tema.

Andrea Sciamanna Andrea Sciamanna
16 apr 2012 21:10:53
Mostra i restanti 2 commenti
Tutte le risposte alla domanda 3
0

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');
}   
1 mar 2016 00:24:22
1

Dovrai iniziare a leggere sulle API per impostazioni e opzioni, per poi integrare i tuoi CPT e Tassonomie.

Ecco alcuni punti da cui iniziare:

16 apr 2012 00:34:22
Commenti
0

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.

8 feb 2021 02:10:15