web-dev-qa-db-fra.com

Requête type de poste personnalisé dans la boucle

J'ai un type de message personnalisé en cours d'exécution appelé services:

// 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' );

Je voudrais utiliser un modèle de page pour afficher les messages à la place de archive-services.php. J'ai construit le modèle de page suivant:

<?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(); ?>

Lorsque je vais à la page sur le front-end, il affiche le fichier archive.php par défaut. Je ne peux pas comprendre ce que je fais mal. Toute aide est très appréciée :)

1
Sam

Vous obtenez probablement un conflit de réécriture avec l'argument has_archive ici:

 $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,
  );

Définissez has_archive sur false si vous ne souhaitez pas que l'archive générée automatiquement soit générée.

Je ne vois pas vraiment la logique de ne pas utiliser le système de gabarit.

2
s_ha_dum