Mesclar dois tipos de postagem personalizados em uma página de administrador?


9

Estou construindo um site com 4 tipos de postagem personalizados. Para facilitar as coisas para o nosso cliente / administrador, gostaria de saber se existe uma maneira de mesclar esses tipos de postagem personalizados em uma lista no back-end? Por exemplo, se você olhar a página de administração de back-end normal com a lista e as colunas de postagens, uma página como essa pode atrair outros 3 tipos de postagens para facilitar a classificação / pesquisa?

Não consigo combinar os CPTs em um, eles devem permanecer separados fora de uma página de 'visualização' na área de administração, se possível.

Alguma ideia de como fazer isso?? Ou mesmo por onde começar a procurar / pensar em como desenvolver isso?


11
Você pode usar 1 CPT e criar uma taxonomia personalizada com 2 termos que separam as postagens no CPT único. Você pode então fazer alguma lógica no topo dos arquivos de modelo front-end para enviar os visitantes para outro modelo baseado em termos / imposto
Sy Holloway

Respostas:


2

Apenas um ponto de partida, pois certamente os problemas aparecerão durante o desenvolvimento. Por exemplo, no momento, a funcionalidade de pesquisa é interrompida, pois espera uma string (post_type) e está recebendo uma matriz.

Para listar mais de um tipo de postagem na tela Postagens, conectamos pre_get_postse modificamos a consulta. Neste teste, Postagens, Páginas e Produtos serão mostrados juntos na tela Postagens ( 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;
}

Um código auxiliar para mostrar uma coluna com cada postagem Tipo de postagem:

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

Eu recomendo o Admin Menu Editor pro para isso. Vou ligar para ele na parte inferior.

Interessante. Em um determinado projeto em que eu estava trabalhando, eu tinha vários CPTs (tipos de postagem personalizados) que eram relacionados. A seção era 'Info Center' e eles queriam que Press Releases, White Papers, Depoimentos etc. estivessem no Info Center. No front-end, criar isso foi fácil. No back-end, queríamos que ele também se encaixasse logicamente. A maioria dos tipos de postagem personalizada foram definidos como CPTs devido a conteúdo específico (metadados) e requisitos de layout. Acabamos tendo cerca de 20 CPTs.

Dito isso, usamos o plug-in do editor de administração para remover os CPTs do Centro de informações relacionados do menu back-end e, em seguida, criamos um menu 'Centro de informações' com os links de CPT relacionados. Enquanto todos pareciam combinados, não estavam.

Aqui está o link do plugin: http://adminmenueditor.com/, experimente a demonstração também.


Como você criou o link "Info Center"?
frnhr
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.