train 828597 1920

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.

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden. Die Angabe einer E-Mail-Adresse und eines Namens ist nicht erforderlich. Einen (Spitz)-Namen zu nennen wäre aber doch nett.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Sowohl angegebener Name als auch E-Mail-Adresse (beides ist optional, dafür werden alle Kommentare vor Veröffentlichung geprüft) werden dauerhaft gespeichert. Du kannst jeder Zeit die Löschung Deiner Daten oder / und Kommentare einfordern, direkt über dieses Formular (wird nicht veröffentlicht, und im Anschluss gelöscht), und ich werde das umgehend erledigen. – Mit hinterlassenen Kommentaren hinterlegte IP-Adressen werden nach zwei Monaten automatisch gelöscht