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