Wenn du in WordPress mit benutzerdefinierten Beitragstypen (CPT) arbeitest, kann es erforderlich sein, Pagination einzusetzen, um eine effiziente Navigation und eine bessere Benutzererfahrung bei einer großen Anzahl von Einträgen zu ermöglichen. In diesem Artikel zeige ich dir, wie du Pagination für benutzerdefinierte Beitragstypen in WordPress implementieren kannst. Ich werde auch einige Codebeispiele bereitstellen, um dir den Einstieg zu erleichtern.
Pagination ist eine Methode, bei der Inhalte auf mehrere Seiten aufgeteilt werden, um das Durchblättern und die Navigation zu erleichtern. Durch die Implementierung von Pagination kannst du lange Ladezeiten und unhandliche, überfüllte Seiten vermeiden. Stattdessen können Benutzer bequem durch die Seiten navigieren und die gewünschten Inhalte schneller finden.
Um Pagination für benutzerdefinierte Beitragstypen in WordPress zu implementieren, kannst du folgende Schritte befolgen:
Schritt 1: Registriere einen benutzerdefinierten Beitragstyp
Bevor du Pagination implementieren kannst, musst du einen benutzerdefinierten Beitragstyp in WordPress registrieren. Hierfür fügst du den folgenden Code in die functions.php-Datei deines Themes oder in ein benutzerdefiniertes Plugin ein:
// Hook into the 'init' action add_action( 'init', 'ls_cpt_dummy', 0 ); function ls_cpt_dummy() { $labels = array( 'name' => __( 'Dummies', 'Post Type General Name', 'theme or plugin' ), 'singular_name' => __( 'Dummy', 'Post Type Singular Name', 'theme or plugin' ), 'menu_name' => __( 'Dummies', 'theme or plugin' ), 'name_admin_bar' => __( 'Dummy', 'theme or plugin' ), 'archives' => __( 'Dummy Archives', 'theme or plugin' ), 'attributes' => __( 'Dummy Attributes', 'theme or plugin' ), 'parent_item_colon' => __( 'Parent Dummy:', 'theme or plugin' ), 'all_items' => __( 'All Dummies', 'theme or plugin' ), 'add_new_item' => __( 'Add New Dummy', 'theme or plugin' ), 'add_new' => __( 'Add New', 'theme or plugin' ), 'new_item' => __( 'New Dummy', 'theme or plugin' ), 'edit_item' => __( 'Edit Dummy', 'theme or plugin' ), 'update_item' => __( 'Update Dummy', 'theme or plugin' ), 'view_item' => __( 'View Dummy', 'theme or plugin' ), 'view_items' => __( 'View Dummies', 'theme or plugin' ), 'search_items' => __( 'Search Dummy', 'theme or plugin' ), 'not_found' => __( 'Not found', 'theme or plugin' ), 'not_found_in_trash' => __( 'Not found in Trash', 'theme or plugin' ), 'featured_image' => __( 'Featured Image', 'theme or plugin' ), 'set_featured_image' => __( 'Set featured image', 'theme or plugin' ), 'remove_featured_image' => __( 'Remove featured image', 'theme or plugin' ), 'use_featured_image' => __( 'Use as featured image', 'theme or plugin' ), 'insert_into_item' => __( 'Insert into Dummy', 'theme or plugin' ), 'uploaded_to_this_item' => __( 'Uploaded to this Dummy', 'theme or plugin' ), 'items_list' => __( 'Dummies list', 'theme or plugin' ), 'items_list_navigation' => __( 'Dummies list navigation', 'theme or plugin' ), 'filter_items_list' => __( 'Filter Dummies list', 'theme or plugin' ), ); // Rewrite $rewrite = array( 'slug' => 'dummy', 'with_front' => true, 'pages' => true, 'feeds' => false, ); $args = array( 'label' => __( 'Dummy', 'theme or plugin' ), 'description' => __( 'Description', 'theme or plugin' ), 'labels' => $labels, 'menu_icon' => 'dashicons-admin-post', 'supports' => array( 'title', 'editor', 'thumbnail', 'revisions', 'author', 'custom-fields' ), 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 25, 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'show_in_rest' => true, // Gutenberg/Rest Api true/false 'can_export' => true, 'has_archive' => true, // Set to false hides Archive Pages 'hierarchical' => false, 'exclude_from_search' => false, 'capability_type' => 'post', 'publicly_queryable' => true, // Set to false hides Single Pages 'query_var' => false, 'rewrite' => $rewrite 'rewrite' => true or false ); register_post_type( 'dummy', $args ); }
Hier noch ein Link für einen Generator
Schritt 2: Erstelle eine benutzerdefinierte Abfrage
Um die Einträge des benutzerdefinierten Beitragstyps abzurufen und Pagination zu implementieren, verwendest du die WP_Query-Klasse von WordPress. Hier ist ein Beispielcode, wie du eine benutzerdefinierte Abfrage erstellen kannst:
if ( get_query_var( 'paged' ) ) { $paged = get_query_var( 'paged' ); } elseif ( get_query_var( 'page' ) ) { $paged = get_query_var( 'page' ); } else { $paged = 1; } $args = array( 'post_type' => 'dummy', 'post_status' => 'publish', 'posts_per_page' => 10, 'paged' => $paged ); // The Query $my_query = new WP_Query( $args ); while ( $my_query->have_posts() ) { $my_query->the_post(); // Hier kannst du den Inhalt des Beitrags anzeigen }
In diesem Code setzt du das Argument post_type auf den Namen deines benutzerdefinierten Beitragstyps und posts_per_page auf die Anzahl der Einträge pro Seite. Das Argument paged stellt sicher, dass die richtige Seite angezeigt wird, wenn du durch die Pagination navigierst.
Schritt 3: Zeige die Pagination-Links an
Nachdem du die benutzerdefinierte Abfrage erstellt hast, kannst du die Pagination-Links mit der Funktion paginate_links() anzeigen. Hier ist ein Beispielcode, wie du die Pagination auf deiner Seite anzeigen kannst:
if ( $my_query->found_posts > 1 ) { $big = 99999999; $args = array( 'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ), 'format' => '?page=%#%', 'total' => $my_query->max_num_pages, 'current' => max( 1, get_query_var('paged') ), 'show_all' => false, 'end_size' => 2, 'mid_size' => 0, 'prev_next' => true, 'prev_text' => __( '← Vorherige', 'ls-customer' ), 'next_text' => __( 'Nächste →', 'ls-customer' ), 'type' => 'plain', 'add_args' => false, 'add_fragment' => '', 'before_page_number' => '', 'after_page_number' => '' ); print paginate_links( $args ); }
In diesem Code verwendest du den Parameter total, um die Gesamtzahl der Seiten anzugeben, current, um die aktuelle Seite festzulegen, und prev_text und next_text, um den Text für die vorherige und nächste Schaltfläche anzupassen.
Pagination ist ein wichtiges Element, um die Benutzererfahrung bei der Verwaltung großer Mengen von benutzerdefinierten Beitragstypen in WordPress zu verbessern. Mit den oben genannten Schritten und Codebeispielen kannst du Pagination für benutzerdefinierte Beitragstypen in WordPress einfach implementieren. Passe den Code entsprechend deinen Anforderungen an und verbessere die Navigation und Benutzerfreundlichkeit deiner Website.