WordPress Post Type-Funktionen

mixer 2062006 1920
Bildquelle: Pixabay, Harald_Landsrath

Die Funktion flxo_has_archive ermittelt, ob der abgefragte Inhaltstyp ein Archive hat. Die Abfrage ist auch auf andere boolsche Post Type-Argumente anwendbar.

/**
 * returns true if post_type has archive
 */
function flxo_has_archive( $post_type ) {
	$obj = get_post_type_object( $post_type );	
	return isset( $obj->has_archive ) && $obj->has_archive === 1 ? true : false;
}

Array aller öffentlichen Inhaltstypen ausgeben (inklusive Seiten)

function flxo_get_public_post_types() {
		
    $args = array(
        'public' => true
    );		
	
    $post_types = get_post_types( $args, 'objects' ); 

    foreach ( $post_types as $post_type ) {
	$items[$post_type->name] = $post_type->label;
    }	
	
    return $items;	
	
}

Array aller öffentlichen Inhaltstypen exklusive Seiten

function flxo_get_publicly_queryable_post_types() {
		
    $args = array(
        'public'  => true,
        'publicly_queryable'  => true // like posts but not like pages
    );		
	
    $post_types = get_post_types( $args, 'objects' ); 

    foreach ( $post_types as $post_type ) {
	$items[$post_type->name] = $post_type->label;
    }	
	
    return $items;	
	
}

Post Type Objekt ausgeben

echo '<pre><h3>Post Type Object</h3>';
print_r( get_post_type_object( $post_type ) );
echo '</pre>';

Gibt die Labels und Paramter eines Post Types aus.

Post Type Object
WP_Post_Type Object
(
    [name] => publicwiki
    [label] => Wiki
    [labels] => stdClass Object
        (
            [name] => Wiki
            [singular_name] => Wiki
            [add_new] => Erstellen
            [add_new_item] => Neue Seite erstellen
            [edit_item] => Seite bearbeiten
            [new_item] => Neue Seite
            [view_item] => Seite ansehen
            [view_items] => Seiten ansehen
            [search_items] => Seiten durchsuchen
            [not_found] => Keine Seiten gefunden.
            [not_found_in_trash] => Keine Seiten im Papierkorb gefunden.
            [parent_item_colon] => Übergeordnete Seite:
            [all_items] => Wiki
            [archives] => Wiki
            [attributes] => Seiten-Attribute
            [insert_into_item] => In die Seite einfügen
            [uploaded_to_this_item] => Zu dieser Seite hochgeladen
            [featured_image] => Beitragsbild
            [set_featured_image] => Beitragsbild festlegen
            [remove_featured_image] => Beitragsbild entfernen
            [use_featured_image] => Als Beitragsbild nutzen
            [filter_items_list] => Seitenliste filtern
            [items_list_navigation] => Navigation der Seitenliste
            [items_list] => Seitenliste 
            [menu_name] => Wiki
            [name_admin_bar] => Wiki
        )

    [description] => 
    [public] => 1
    [hierarchical] => 1
    [exclude_from_search] => 
    [publicly_queryable] => 1
    [show_ui] => 1
    [show_in_menu] => 1
    [show_in_nav_menus] => 1
    [show_in_admin_bar] => 1
    [menu_position] => 
    [menu_icon] => 
    [capability_type] => page
    [map_meta_cap] => 1
    [register_meta_box_cb] => 
    [taxonomies] => Array
        (
        )

    [has_archive] => 
    [query_var] => publicwiki
    [can_export] => 1
    [delete_with_user] => 
    [_builtin] => 
    [_edit_link] => post.php?post=%d
    [cap] => stdClass Object
        (
            [edit_post] => edit_page
            [read_post] => read_page
            [delete_post] => delete_page
            [edit_posts] => edit_pages
            [edit_others_posts] => edit_others_pages
            [publish_posts] => publish_pages
            [read_private_posts] => read_private_pages
            [read] => read
            [delete_posts] => delete_pages
            [delete_private_posts] => delete_private_pages
            [delete_published_posts] => delete_published_pages
            [delete_others_posts] => delete_others_pages
            [edit_private_posts] => edit_private_pages
            [edit_published_posts] => edit_published_pages
            [create_posts] => edit_pages
        )

    [rewrite] => Array
        (
            [slug] => wiki
            [with_front] => 
            [pages] => 1
            [feeds] => 
            [ep_mask] => 1
        )

    [show_in_rest] => 
    [rest_base] => 
    [rest_controller_class] => 
)

Parameter eines Post Types ändern

function flxo_custom_post_type_args( $args, $post_type ) {
    if ( $post_type == 'custom-type' ) {
        $args['has_archive'] = true;
        $args['rewrite'] = array(
              'slug' => 'custom-slug'
        );

    }

    return $args;
}
add_filter( 'register_post_type_args',  'flxo_custom_post_type_args', 20, 2 );

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

publicly queryable