Zeigen Sie den benutzerdefinierten Posttyp in der Vorlage an

Ich habe einen benutzerdefinierten Post-Typ namens Campingplätze, Veranstaltungen und Aktivitäten

Ich möchte dies in einer Liste anzeigen.

Wenn der Benutzer auf den Link klickt, werden dann alle Posts unter diesem benutzerdefinierten Posttyp angezeigt.

Jede Hilfe würde sehr geschätzt werden.

Bearbeiten

add_action('init', 'activity_resources_register_post_type'); function activity_resources_register_post_type() { register_post_type('activity_resources', array( 'labels' => array( 'name' => 'Activity Resources', 'singular_name' => 'Activity Resources', 'add_new' => 'Add new Activity Resources', 'edit_item' => 'Edit Activity Resources', 'new_item' => 'New Activity Resources', 'view_item' => 'View Activity Resources', 'search_items' => 'Search Activity Resources', 'not_found' => 'No Activity Resources found', 'not_found_in_trash' => 'No Activity Resources found in Trash' ), 'public' => true, 'has_archive' => 'activity_resources', 'rewrite' => array("slug" => "activity_resources"), // the slug for permalinks 'supports' => array('title', 'editor', 'thumbnail') )); } 

Solutions Collecting From Web of "Zeigen Sie den benutzerdefinierten Posttyp in der Vorlage an"

Erstellen Sie eine benutzerdefinierte Seitenvorlage

Der erste Schritt besteht darin , eine benutzerdefinierte Seitenvorlage für den Code zu erstellen . template-cpt-list.php Sie zum Beispiel die Datei template-cpt-list.php :

 < ?php /** * Template Name: Custom Post Types List */ get_header(); // Custom code will go here get_footer(); ?> 

Liste der generierten benutzerdefinierten Post-Typen (CPTs) erstellen

Der nächste Schritt besteht darin, Ihre CPT-Liste zu erstellen. Dafür gibt es eine corefunktion: get_post_types() :

 < ?php get_post_types( $args, $output, $operator ); ?> 

So können Sie zum Beispiel öffentliche, benutzerdefinierte Post-Typen nach Namen zurückgeben:

 $custom_post_types = get_post_types( array( // Set to FALSE to return only custom post types '_builtin' => false, // Set to TRUE to return only public post types 'public' => true ), // Set to "objects", so we have the full CPT object 'objects' ); 

Jetzt sind Ihre CPTs in einer Variablen enthalten, die ein Array von CPT-Objekten enthält.

Erstellen Sie eine Liste der Permalinks für den CPT-Archivindex

Der nächste Schritt besteht also darin, die CPT-Objekte zu übernehmen und daraus eine Liste von Permalinks für jeden CPT-Archivindex zu erstellen. Dazu gibt es auch eine corefunktion: get_post_type_archive_link() :

 < ?php get_post_type_archive_link( $posttype ); ?> 

Also gehen wir einfach durch unsere Reihe von Post-Typ-Namen und rufen den Permalink für jeden auf:

 foreach ( $custom_post_types as $custom_post_type ) { $custom_post_type->permalink = get_post_type_archive_link( $custom_post_type->name ); } 

Dann können Sie dieses Array von Permalinks (URLs) verwenden, um Ihre Listenmarkierung zu erstellen:

  

Alles zusammensetzen

Deine template-cpt-list.php sollte nun so aussehen:

 < ?php /** * Template Name: Custom Post Types List */ get_header(); // Get list of CPTs $custom_post_types = get_post_types( array( // Set to FALSE to return only custom post types '_builtin' => false, // Set to TRUE to return only public post types 'public' => true ), // Set to "objects", so we have the full CPT object 'objects' ); // Add CPT permalinks to CPT objects foreach ( $custom_post_types as $custom_post_type ) { $custom_post_type->permalink = get_post_type_archive_link( $custom_post_type->name ); } // Output CPT archive index permalinks list echo ''; get_footer(); ?> 

Mandy,

Sie können eine neue Seitenvorlage erstellen (nennen Sie sie, was Sie wollen, ich würde sie “page-activity-resources.php” nennen), die eine WP_Query enthält, um Ihre Aktivitätsressourcen-Posts abzurufen und mit Paginierung anzuzeigen.

 < ?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $cpt_query_args = array( 'post_type' => 'activity_resources', 'posts_per_page' => 5, 'paged' => $paged ); $cpt_query = new WP_Query( $cpt_query_args ); if ($cpt_query->have_posts()) : while ($cpt_query->have_posts()) : $cpt->the_post(); ?> 

Um alle benutzerdefinierten Beitragstypen aufzulisten, können Sie get_post_types verwenden, um Ihre Liste zu generieren:

  function your_custom_post_types() { $args=array( '_builtin' => false ); $cpt_types=get_post_types($args,'names'); return $cpt_types; } < ?php $post_types = your_custom_post_types(); foreach ($post_types as $post_type) { echo '
  • '.$post_type.''; endforeach;