Mesclar dois tipos de postagem personalizados em uma página de administração?

9

Estou construindo um site com 4 tipos de postagem personalizados. Para tornar as coisas mais fáceis para o nosso cliente / administrador, estou pensando se há uma maneira de mesclar esses tipos de post personalizado em uma lista no back-end? Como se você olhasse para uma página normal de administração de back-end com a lista e as colunas de posts, uma página como essa pode atrair outros 3 tipos de postagens para facilitar a classificação / pesquisa?

Eu não posso 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 idéia de como fazer isso? Ou até onde começar a procurar / pensar em como desenvolver isso?

    
por Aaron 11.09.2013 / 20:53

2 respostas

2

Apenas um ponto de partida, pois certamente os problemas aparecerão durante o desenvolvimento. Por exemplo, agora, 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 em pre_get_posts e modificamos a consulta. Neste teste, Posts, Páginas e Produtos serão exibidos 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 post Post Type:

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 );
}
    
por brasofilo 19.09.2013 / 13:57
0

Eu recomendaria 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 customizados) que estavam relacionados. A seção era 'Info Center' e eles queriam que os Press Releases, White Papers, Testemunhos, etc. estivessem dentro do Info Center. No front end, criar isso foi fácil. No final, queríamos que isso se encaixasse logicamente também. A maioria dos tipos de postagem personalizada foi definida como CPTs devido a conteúdo específico (meta-fileds) e requisitos de layout. Acabamos tendo, assim, perto de 20 CPTs.

Dito isso, usamos o plug-in do editor administrativo para remover os CPTs do Centro de Informações relacionados no menu de back-end e, em seguida, criamos um menu "Centro de Informações" com os links de CPT relacionados. Enquanto todos pareciam combinados, eles não eram.

Aqui está o link do plugin: enlace experimente a demonstração também.

    
por Alex V. 15.09.2013 / 12:53