WordPress : Interroger le type de publication personnalisé et afficher son contenu

Publié par Jean-Michel le

Je suis un débutant dans le développement de thèmes wp et j’ai du mal à montrer mon cpt.

J’ai ajouté un nouveau cpt dans mon fichier functions.php :

// Creates Testimonials Custom Post Type
function testimonials_init() {
    $args = array(
      'label' => 'Testimonials',
        'public' => true,
        'show_ui' => true,
        'capability_type' => 'post',
        'hierarchical' => false,
        'rewrite' => array('slug' => 'testimonials'),
        'query_var' => true,
        'menu_icon' => 'dashicons-format-quote',
        'supports' => array(
            'title',
            'editor',
            'excerpt',
            'trackbacks',
            'custom-fields',
            'comments',
            'revisions',
            'thumbnail',
            'author',
            'page-attributes',)
        );
    register_post_type( 'testimonials', $args );
}
add_action( 'init', 'testimonials_init' );

Et j’ai créé un nouveau modèle de page et ajouté ce code :

<?php 
 /*
 * Template Name: Testimonials
 */
 ?>

<?php get_header(); ?>
<div class="container">
<div class="content-page">
<h1><?php wp_title(); ?></h1>
<title><?php wp_title(); ?></title>
<?php
 $query = new WP_Query( array('post_type' => 'testimonials', 'posts_per_page' => 5 ) );
 while ( $query->have_posts() ) : $query->the_post(); ?>


<?php endwhile; ?>
</div>
</div>

<?php 
$args = array( 'post_type' => 'testimonials', 'posts_per_page' => 10 );
$the_query = new WP_Query( $args ); 
?>
<?php if ( $the_query->have_posts() ) : ?>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<div class="entry-content">
<?php the_content(); ?> 
</div>
<?php wp_reset_postdata(); ?>
<?php else:  ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>




<?php get_footer(); ?>

Je veux que ma page affiche tous les témoignages sur le front-end et je ne peux pas le faire et j’obtiens cette erreur :

Parse error: syntax error, unexpected 'else' (T_ELSE)

Merci les gars!!!

Solution n°1 trouvée

Vous ne fermez pas la deuxième boucle while. Vous voudrez probablement quelque chose comme ceci :

<?php 
 /*
 * Template Name: Testimonials
 */
 ?>

<?php get_header(); ?>

<div class="container">
    <div class="content-page">
        <h1><?php wp_title(); ?></h1>
        <title><?php wp_title(); ?></title>
        <?php
         $query = new WP_Query( array('post_type' => 'testimonials', 'posts_per_page' => 5 ) );
         while ( $query->have_posts() ) : $query->the_post(); ?>

        <?php endwhile; ?>
    </div>
</div>

<?php 
$args = array( 'post_type' => 'testimonials', 'posts_per_page' => 10 );
$the_query = new WP_Query( $args ); 
?>
<?php if ( $the_query->have_posts() ) : ?>
    <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
        <h2><?php the_title(); ?></h2>
        <div class="entry-content">
            <?php the_content(); ?> 
        </div>
    <?php endwhile; ?>
<?php else:  ?>
    <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>
<?php wp_reset_postdata(); ?>

<?php get_footer(); ?>

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *