Bonjour,
Je souhaite afficher les 5 derniers articles sur une page d'accueil perso., mais avec un affichage différent pour le premier article. J'ai donc écrit ce code que j'essaye de bidouiller car j'ai des erreurs. Mais impossible d'afficher le premier article avec le premier template et les 4 autres avec le deuxième template. Je ne sais pas si c'est possible de faire comme je veux, mais cette façon semble être la plus simple pour ce genre d'affichage. Je débute en php :/

<?php
  $query = array(
    'post_type' => 'post',
    'posts_per_page' => 5
  );
  $query = new WP_Query($query);
  while ($query->have_posts()) : {
    $query->the_post();
    if($query->current_post === 0) :
      get_template_part('loops/acc-cards');
    else() :
      get_template_part('loops/cards');
  }
  wp_reset_postdata();
  ?>

J'ai testé avec le thème plusieurs thème ça ne marche sur aucun. Tous les thèmes me renvois les même erreurs. Je suis sous laragon en php 7.4.16.

Ce que j'obtiens

J'ai des erreurs php qui apparaissent : ça m'indique une syntax error sur les () du else . Je les supprime une nouvelle erreur apparaît : ce sont les {} du while qui apparaissent en syntax error, je les supprimes et le wp_reset_postdata(); aparrait en syntax error. je le supprime et cette fois ci j'ai ce message d'erreur : Erreur fatale : Erreur non détectée : erreur de syntaxe, fin inattendue du fichier dans \wp-content\themes\picostrap5\front-page.php à la ligne 70 Pile d'appel : require_once() wp-blog-header.php:19 require( )

2 réponses


Lucax
Auteur
Réponse acceptée

<?php $query = array( 'post_type' => 'post', 'posts_per_page' => 5 ); $query = new WP_Query($query); while ($query->have_posts()) : $query->the_post(); if($query->current_post === 0) : get_template_part('loops/acc-cards'); else : get_template_part('loops/cards'); endif; endwhile; wp_reset_postdata(); ?>

Solution trouvé ! Il manqué juste un endwhile à ma place des { }.

Lucax
Auteur

J'ai su corriger l'erreur du else et des { } du while avec un endif; mais j'ai toujours la dernière erreurs :


  $query = array(
    'post_type' => 'post',
    'posts_per_page' => 5
  );
  $query = new WP_Query($query);
  while ($query->have_posts()) : {
    $query->the_post();
    if($query->current_post === 0) :
      get_template_part('loops/acc-cards');
    else:
      get_template_part('loops/cards');
    endif;
  }
  wp_reset_postdata();
  ?>```

   Fatal error: Uncaught Error: syntax error, unexpected end of file
in \themes\picostrap5\front-page.php on line 89

Pile d’appel :

    require_once()
    wp-blog-header.php:19
    require()
    index.php:17[](null)