tschaki
WordPress Shortcode erstellen
Home » WordPress Custom Post Type erstellen

WordPress Custom Post Type erstellen

Einer von vielen Vorzügen einer WordPress Webseite besteht darin, dass sich die Webseite beliebig mit Inhalt erweitern lässt. Eine der besten Funktionalitäten ist auf jeden Fall die Erweiterung via sogenanntem Custom Post Type.

Ein Custom Post Type erweitert eine WordPress Webseite um ein weiteres Gefäss um neue Beiträge darin zu erfassen. Beispielsweise kann man damit Referenzen, Bücher oder Filme sammeln um diese dann zentralisiert auf der Webseite auszugeben oder zu sammeln. Beispielsweise erweitern wir die Webseite um ein FAQ Gefäss mit einem Custom Post Type.

Um den neuen Custom Post Type zu registrieren wird folgender Code in die functions.php des aktiven Themes oder Plugins eingefügt:

/*
* Creating a function to create our CPT
*/
function faq_custom_post_type() {
 
    // Set UI labels for Custom Post Type
    $labels = array(
        'name' => _x( 'FAQ', 'FAQ', 'twentytwenty' ),
        'singular_name' => _x( 'FAQ', 'FAQ', 'twentytwenty' ),
        'menu_name' => __( 'FAQ', 'twentytwenty' ),
        'all_items' => __( 'Alle FAQs', 'twentytwenty' ),
        'view_item' => __( 'FAQ anzeigen', 'twentytwenty' ),
        'add_new_item' => __( 'Neues FAQ', 'twentytwenty' ),
        'add_new' => __( 'Neues FAQ', 'twentytwenty' ),
        'edit_item' => __( 'FAQ bearbeiten', 'twentytwenty' ),
        'update_item' => __( 'FAQ aktualisieren', 'twentytwenty' ),
        'search_items' => __( 'Suche FAQ', 'twentytwenty' ),
        'not_found' => __( 'Nicht gefunden', 'twentytwenty' ),
        'not_found_in_trash' => __( 'Nicht gefunden im Papierkorb', 'twentytwenty' )
    );
     
    // Set other options for Custom Post Type
    $args = array(
        'label' => __( 'faqs', 'twentytwenty' ),
        'description' => __( 'FAQs', 'twentytwenty' ),
        'labels' => $labels,
        // Features this CPT supports in Post Editor
        'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields', ),
        // You can associate this CPT with a taxonomy or custom taxonomy. 
        'taxonomies' => array( 'category' ),
        // A hierarchical CPT is like Pages and can have parent and child items. A non-hierarchical CPT is like Posts.
        'hierarchical' => false,
        'public' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'show_in_nav_menus' => true,
        'show_in_admin_bar' => true,
        'menu_position' => 5,
        'can_export' => true,
        'has_archive' => true,
        'exclude_from_search' => false,
        'publicly_queryable' => true,
        'capability_type' => 'post',
        'show_in_rest' => true,
    );
     
    // Registering your Custom Post Type
    register_post_type( 'faq', $args );
}
 
/* Hook into the 'init' action so that the function
* Containing our post type registration is not 
* unnecessarily executed. 
*/
add_action( 'init', 'faq_custom_post_type', 0 );

Nach Kopieren des Codes Parameter anpassen nicht vergessen. Um beispielsweise Name, Taxanomy, Anzeigeicon, etc. im Backend angepasst darzustellen. Nun können im WordPress Backend neue Beiträge erfasst werden, welche unter dem neuen post_type abgespeichert werden.

Beiträge des neuen Custom Post Type ausgeben

Um die angelegten Beiträge des neuen Custom Post Type zu verwenden, wird ein WP_Query aufgebaut. Somit werden nur die Beiträge mit dem passenden Post Type faq eingelesen. Hierfür können viele weitere Parameter angegeben werden.

$args = array( 'post_type' => 'faq', 'posts_per_page' => 10 );
$the_query = new WP_Query( $args ); 
// Fetch 10 posts with post_type faq
if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();
	the_title();
	the_content();
}

Im obigen Beispiel werden Titel und Inhalt der in WordPress gefundenen faq Post Type ausgegeben.

Zudem zeigt WordPress nun im Backend den neuen Custom Post Type im Menü an.

Weitere Informationen: WordPress Codex

Downloads

Trent Bojett

My name is Trent Bojett, I am 28 years old and I live in Switzerland. Because of my enthusiasm for writing and the logical world (= software development) I started this blog in early 2020.

Kommentieren