it-swarm.com.de

Fragen Sie den Typ des benutzerdefinierten Beitrags in der Schleife ab

Ich habe einen benutzerdefinierten Beitragstyp namens "Dienste":

// Services
function services_cpt() {
  $labels = array(
    'name'               => _x( 'Services', 'post type general name' ),
    'singular_name'      => _x( 'Service', 'post type singular name' ),
    'add_new'            => _x( 'Add New', 'production' ),
    'add_new_item'       => __( 'Add New Service' ),
    'edit_item'          => __( 'Edit Service' ),
    'new_item'           => __( 'New Service' ),
    'all_items'          => __( 'All Services' ),
    'view_item'          => __( 'View Service' ),
    'search_items'       => __( 'Search Services' ),
    'not_found'          => __( 'No services found' ),
    'not_found_in_trash' => __( 'No services found in the Trash' ), 
    'parent_item_colon'  => '',
    'menu_name'          => 'Services'
  );
  $args = array(
    'labels'        => $labels,
    'description'   => 'Holds our services and service specific data',
    'public'        => true,
    'menu_position' => 5,
    'supports'      => array( 'title', 'editor', 'thumbnail' ),
    'has_archive'   => true,
  );
  register_post_type( 'services', $args ); 
}
add_action( 'init', 'services_cpt' );

Ich möchte anstelle von archive-services.php eine Seitenvorlage verwenden, um die Beiträge anzuzeigen. Ich habe die folgende Seitenvorlage erstellt:

<?php
/*
Template Name: Services
*/
// Get header
get_header(); ?>

<div id="primary">
<?php $loop = new WP_Query( array( 'post_type' => 'services', 'posts_per_page' => -1 ) ); ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>

<section class="col third">
<a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_post_thumbnail('medium'); ?></a>
<h2><a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<?php the_content(); ?>
</section>

<!-- End loop -->
<?php endwhile; wp_reset_query(); ?>

<!-- End primary -->
</div>
<?php get_footer(); ?>

Wenn ich auf die Seite im Frontend gehe, wird die Standarddatei archive.php angezeigt. Ich kann nicht herausfinden, was ich falsch mache. Jede Hilfe wird sehr geschätzt :)

1
Sam

Wahrscheinlich tritt hier ein Überschreibungskonflikt mit dem Argument has_archive auf:

 $args = array(
    'labels'        => $labels,
    'description'   => 'Holds our services and service specific data',
    'public'        => true,
    'menu_position' => 5,
    'supports'      => array( 'title', 'editor', 'thumbnail' ),
    'has_archive'   => true,
  );

Setzen Sie has_archive auf false, wenn Sie das automatisch generierte Archiv nicht möchten.

Die Logik, das Template-System nicht zu verwenden, sehe ich allerdings nicht wirklich.

2
s_ha_dum