wake-up-neo.com

Auflisten aller benutzerdefinierten Beitragstypnamen (keine Beiträge)

Mit einigen benutzerdefinierten Beitragstypen wie "Projects", "Products" und "Events" muss ich sie auf einer Seite auflisten. Bitte beachten Sie, dass ich hier kein POST auflisten möchte! Stattdessen möchte ich nur den Namen aller benutzerdefinierten Beitragstypen abfragen und sie für jeden von ihnen mit archive-projects.php, archive-products.php und archive-events.php verknüpfen. Können Sie mir bitte mitteilen, wie das geht? Vielen Dank

4
Mona Coder

Holen Sie sich alle benutzerdefinierten Beitragstypen:

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

Sortieren Sie sie nach ihrem Namen:

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

Verknüpfen Sie die Namen der Beitragstypen mit ihren Archiven, wenn diese tatsächlich verfügbar sind:

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