Unisci due tipi di post personalizzati in una pagina di amministrazione?


9

Sto costruendo un sito con 4 tipi di post personalizzati. Per rendere le cose più facili per il nostro cliente / amministratore, mi chiedo se c'è un modo per unire quei tipi di post personalizzati in un elenco nel back-end? Ad esempio, se guardi la normale pagina di amministrazione back-end con l'elenco e le colonne di post, una pagina del genere può inserire altri 3 tipi di post per semplificare l'ordinamento / la ricerca?

Non riesco a combinare i CPT in uno, devono rimanere separati al di fuori di una pagina di "visualizzazione" nell'area di amministrazione, se possibile.

Qualche idea su come farlo ?? O anche da dove iniziare a cercare / pensare a come svilupparlo?


1
Potresti forse guardare usando 1 CPT, quindi creare una tassonomia personalizzata con 2 termini che separano i post nel singolo CPT. Puoi quindi fare un po 'di logica nella parte superiore dei file modello front-end per inviare i visitatori a un altro modello basato su termini / tasse
Sy Holloway,

Risposte:


2

Solo un punto di partenza, poiché sicuramente i problemi verranno visualizzati durante l'ulteriore sviluppo. Ad esempio, in questo momento, la funzionalità di ricerca si interrompe poiché si aspetta una stringa (post_type) e sta ricevendo un array.

Per elencare più di un tipo di post nella schermata Messaggi, agganciamo pre_get_postse modifichiamo la query. In questo test, Messaggi, Pagine e Prodotti verranno mostrati insieme nella schermata Messaggi ( http://example.com/wp-admin/edit.php).

add_action( 'pre_get_posts', 'join_cpt_list_wspe_113808' );

function join_cpt_list_wspe_113808( $query ) 
{
    // If not backend, bail out
    if( !is_admin() )
        return $query;

    // Detect current page and list of CPTs to be shown in Dashboard > Posts > Edit screen
    global $pagenow;
    $cpts = array( 'post', 'page', 'product' );

    if( 'edit.php' == $pagenow && ( get_query_var('post_type') && 'post' == get_query_var('post_type') ) )
        $query->set( 'post_type', $cpts );

    return $query;
}

Un codice di supporto per mostrare una colonna con ogni post Tipo di post:

add_filter( 'manage_edit-post_columns', 'add_cpt_column_wspe_113808' );
foreach( array( 'post', 'page', 'product' ) as $cpt )
    add_action( "manage_{$cpt}_posts_custom_column", 'show_cpt_column_wspe_113808', 10, 2 );

function add_cpt_column_wspe_113808( $columns ) 
{
    $columns[ 'cpt' ] = 'Post Type';
    return $columns;
}

function show_cpt_column_wspe_113808( $column_name, $post_id ) 
{
    if ( 'cpt' != $column_name )
        return;
    echo get_post_type( $post_id );
}

0

Consiglierei Admin Menu Editor pro per questo. Lo collegherò in fondo.

Interessante. In un certo progetto a cui stavo lavorando avevo diversi CPT (tipi di post personalizzati) che erano in qualche modo correlati. La sezione era "Centro informazioni" e volevano che i comunicati stampa, i white paper, le testimonianze ecc. Fossero all'interno del centro informazioni. Sul front-end, creare questo è stato facile. Sul back-end volevamo che si adattassero anche logicamente. La maggior parte dei tipi di posta personalizzati sono stati impostati come CPT a causa del contenuto specifico (meta-filed) e dei requisiti di layout. Alla fine abbiamo avuto circa 20 CPT.

Detto questo, abbiamo utilizzato il plug-in dell'editor di amministrazione per rimuovere i relativi CPT del Centro informazioni dal menu di back-end e quindi abbiamo creato un menu 'Centro informazioni' con i relativi collegamenti CPT all'interno. Mentre sembravano tutti combinati, non lo erano.

Ecco il link del plugin: http://adminmenueditor.com/ prova anche la demo.


Come hai creato il link "Centro informazioni"?
dal
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.