web-dev-qa-db-fra.com

Comment répertorier tous les noms de types d'articles personnalisés (pas d'articles)

Avoir des types de publication personnalisés comme "Projects", "Products" et "Events" Je dois les répertorier dans une page. Veuillez noter que je ne souhaite pas répertorier les POST ici! au lieu de cela, je veux juste interroger le nom de tous les types de messages personnalisés et les lier en archive-projects.php, archive-products.php et archive-events.php pour chacun d'eux. Pouvez-vous s'il vous plaît laissez-moi savoir comment faire cela? Merci

4
Mona Coder

Obtenez tous les types de messages personnalisés:

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

Triez-les par leur nom:

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
    );
}

Liez les noms de type de publication à leurs archives si celles-ci sont réellement disponibles:

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
        );
    }
}
6
fuxia