Como listar todos os nomes de tipos de postagem personalizados (não postagens)

4

Ter alguns tipos de postagem personalizada Como "Projects", "Products" e "Events" Preciso listá-los em uma página. Por favor, esteja ciente de que não quero listar nenhum POST aqui! em vez disso, quero apenas consultar o nome de todos os tipos de postagens personalizados e vinculá-los em archive-projects.php , archive-products.php e archive-events.php para cada um deles. Você pode por favor me avisar como fazer isso? Obrigado

    
por Mona Coder 20.01.2015 / 08:28

1 resposta

6

Obtenha todos os tipos de postagens personalizadas:

$post_types = get_post_types( array ( '_builtin' => FALSE ), 'objects' );

Classifique-os pelo nome:

uasort( $post_types, 'sort_cpts_by_label' );

/**
 * Sort post types by their display label.
 *
 * @param object $cpt1
 * @param object $cpt2
 * @return int
 */
function sort_cpts_by_label( $cpt1, $cpt2 ) {

    return strcasecmp(
        $cpt1->labels->name,
        $cpt2->labels->name
    );
}

Vincule os nomes dos tipos de postagem aos arquivos se os arquivos estiverem realmente disponíveis:

foreach ( $post_types as $post_type => $properties ) {
    if ( $properties->has_archive ) {
        printf(
            '<a href="%1$s">%2$s</a><br>',
            get_post_type_archive_link( $post_type ),
            $properties->labels->name
        );
    }
}
    
por fuxia 20.01.2015 / 08:44