Bei nachfolgenden Funktionen die Arrays mit Slugs und Bezeichnungen von Inhaltstypen ausgeben, unterscheiden sich die Argumente je nachdem, ob Seiten (oder Typen die Seiten entsprechen) dabei sein sollen oder nicht.
Öffentlich zugängliche Inhaltstypen inklusive Seiten
/**
* returns public post types with pages
*/
function flxo_get_public_post_types() {
$items = array();
$args = array(
'public' => true
);
$post_types = get_post_types( $args, 'objects' );
if ( count( $post_types ) ) {
foreach ( $post_types as $post_type ) {
$items[$post_type->name] = $post_type->label;
}
}
return $items;
}
Gibt neben nachfolgenden Standard-Inhaltstypen post
, page
und attachment
auch öffentliche benutzerdefinierte Inhaltstypen zurück.
Array
(
[post] => Beiträge
[page] => Seiten
[attachment] => Medien
[customtype] ) => Custom Type
)
Öffentlich zugängliche Inhaltstypen exklusive Seiten
/**
* returns public post types with pages
*/
function flxo_get_public_post_types() {
$items = array();
$args = array(
'public' => true,
'publicly_queryable' => true
);
$post_types = get_post_types( $args, 'objects' );
if ( count( $post_types ) ) {
foreach ( $post_types as $post_type ) {
$items[$post_type->name] = $post_type->label;
}
}
return $items;
}
Gibt neben den Standard-Inhaltstypen post
und attachment
auch öffentliche Inhaltstypen zurück die den Argumenten entsprechen.
Array
(
[post] => Beiträge
[attachment] => Medien
[customtype] ) => Custom Type
)
Seiten fehlen in der zweiten Funktionen, denn sie sind nicht publicly_queryable
. Es gibt keinen Link http://example.com/?post_type=page
der ein Archiv mit Seiten ausgibt.
Der auf true
gesetzte Parameter publicly_queryable
listet bei Eingabe http://example.com/?post_type=customtype
unter customtype
geschriebene veröffentlichte (daher funktionert es nicht mit Attachments, da deren post_status inherit
ist, nicht publish
) Beiträge auf.
Durch publicly_queryable
entsteht ein Inhaltstyp-Archiv, das allerdings nicht automatisch Rewrite-Regeln aus den Permalinkeinstellungen übernimmt. Dafür muss zusätzlich der Parameter has_archive
auf true
gesetzt sein. Das generiert (soweit der Rewrite-Slug nicht explizit verändert wurde) automatisch den Link http://example.com/customtype
zum Inhaltstyp-Archiv.
Der Standard-Typ post
für Beiträge ist publicly_queryable
, has_archive
trifft aber nicht zu.
Darauf achten, dass es keine Seite gibt, die denselben Slug verwendet wie ein Inhaltstyp der in den Rewrite-Regeln berücksichtigt werden soll. Diesen Link kann es nur ein Mal geben.
Schreibe einen Kommentar