Vuoi visualizzare il custom post type come sottomenu all'interno del menu di modifica dei post? Sebbene probabilmente esista un plugin per questo, abbiamo creato un rapido snippet di codice che puoi utilizzare per visualizzare il menu del custom post type come sottomenu in WordPress.
Istruzioni:
Tutto quello che devi fare è aggiungere questo codice al file functions.php del tuo tema o in un plugin specifico per il sito:
function nacin_register_slideshows_post_type() {
register_post_type( 'slideshow', array(
'labels' => array(
'name' => 'Slideshows',
'singular_name' => 'Slideshow',
),
'public' => true,
'show_ui' => true,
'show_in_menu' => 'edit.php',
'supports' => array( 'title' ,'thumbnail', 'editor' ),
) );
}
add_action( 'init', 'nacin_register_slideshows_post_type' );
Nota: Se questa è la prima volta che aggiungi snippet di codice in WordPress, consulta la nostra guida su come aggiungere correttamente snippet di codice in WordPress, in modo da non compromettere accidentalmente il tuo sito.
Se ti è piaciuto questo snippet di codice, prendi in considerazione la lettura dei nostri altri articoli sul sito come: 43 migliori temi di fotografia per WordPress e come creare un modulo di contatto in WordPress.
Ho registrato un post_type con 'add new item', ma 'add new item' non viene visualizzato nel sottomenu, qualche suggerimento per il mio problema?
Bello. Sto cercando di portare questo un passo avanti e allegare il post type a una pagina di menu personalizzata. Finora niente da fare... qualche idea?
La tua domanda è vecchia ma ho pensato che questo potesse essere utile a qualcun altro.
Ho passato molto tempo a cercare nel codice sorgente di WP per fare la
stessa cosa: ho un menu personalizzato creato usando add_menu_page(). Ha una manciata
di voci di sottomenu. Ho un custom post type correlato a questo menu e volevo
che i link di aggiunta / elenco per quel post type fossero voci di sottomenu.
Risposta breve: Non c'è un modo semplice per farlo in WP. Il modo in cui
genera i menu e l'interfaccia utente dei custom post type significa che non c'è una semplice chiamata che puoi fare.
Soluzione:
1. Registra il tuo post type con le seguenti opzioni:
‘show_ui’ => true,
‘show_in_menu’ => false
In questo esempio il mio custom post type è acct_notes
2. Nel file functions.php del tuo tema o nel tuo file plugin, aggiungi un'azione a
admin_menu:
add_action(‘admin_menu’,
‘modify_admin_menus’);
3. Aggiungi submenu_pages per i due link dell'interfaccia utente del post: elenco post, crea nuovo post.
Il primo parametro è lo slug del menu a cui lo stai aggiungendo. Il secondo è il nome che apparirà sulla pagina. Il terzo è come apparirà il link. Il quarto è la capacità richiesta per accedervi. Il quinto è lo slug per questa voce di menu. E l'ultimo è la funzione che genererà l'output. In questo caso non la useremo, quindi possiamo passare NULL.
add_submenu_page(‘members’, ‘Note Accounti’, ‘Note Accounti’,
‘manage-options’, ‘view_account_notes’, NULL);
4. L'ultimo passaggio è la funzione che modificherà quei link del sottomenu in modo che puntino alle pagine corrette dell'interfaccia utente del post.
function modify_admin_menus(){
global $submenu;
if(array_key_exists(‘members’, $submenu)){
foreach($submenu[‘members’] as $key => $value){
$k =
array_search(‘view_account_notes’, $value);
if($k){
$submenu[‘members’][$key][$k] =
(current_user_can($submenu[‘members’][$key][1]))?
admin_url(‘/edit.php?post_type=acct_notes’):”;
}
$l = array_search(‘new_account_note’, $value);
if($l){
$submenu[‘members’][$key][$l] =
(current_user_can($submenu[‘members’][$key][1]))?
admin_url(‘/post-new.php?post_type=dojo_acct_notes’) : ”;}
}
}
}
Ci ci quello che sta succedendo nella funzione array globale $submenu per vedere se il nostro elemento di menu di primo livello (membri) esiste - potrebbe non esserci se l'utente non ha il permesso di accedervi. Se lo fa, allora guarda per vedere se quell'elemento di menu di primo livello ha una pagina di sottomenu con lo slug "view_account_notes" - quello che abbiamo assegnato in add_submenu_page. Infine, controlla il permesso che abbiamo assegnato in add_submenu_page e se l'utente corrente ha quel permesso, emette il nuovo link. Se non lo ha, rimuove del tutto il link.
Facciamo lo stesso controllo due volte - una per il link per elencare il nostro tipo di post personalizzato e una per il link per aggiungere un nuovo tipo di post personalizzato.
Sarebbe molto preferibile avere questa funzionalità integrata, ma questo ti permetterà di aggiungere interfacce utente di tipi di post personalizzati a qualsiasi menu desideri.
Grazie mille. Puoi aiutarmi, per favore? Ho un problema: voglio creare un menu nell'amministrazione di WordPress contenente molti tipi di post personalizzati figli per una facile gestione. Esempio:
Le strutture del menu includono tipi di post: – Riunioni; – Matrimoni; – SPA
Grazie mille per l'aiuto.
buon trucco. grazie.
nessun problema, quando vuoi,
Non è un trucco, è una funzionalità