[Résolu] Récupérer les slug des articles (Créer un compte)

  • WordPress :5.8
  • Statut : résolu
3 sujets de 1 à 3 (sur un total de 3)
  • Auteur
    Messages
  • #2424665
    Macteaser
    Participant
    Initié WordPress
    22 contributions

    Bonjour,

    Afin de réaliser mon code sans que ça atteigne mon site j’ai préferer créer un site wp en local ou j’ai fait une copie du site existant.

    Problème(s) rencontré(s) :

    Je dois faire une template pour l’archive d’une catégorie « Les Éditions ».

    Je récupère tous mes articles lié à cette catégorie et fait afficher, grâce à une boucle, sous forme de carte l’image mis en avant et le titre de mon article

    Je récupère également mes articles lié à certains tag (ici j’y ai mets que sur 6 article pour le test) et fait afficher dans la carte li’mage mise en avant de ces articles.
    Pour le moment ces 6 articles s’affichent dans toutes les cartes puisque je n’ai pas de conditions d’affichage.

    Ce que je voudrais faire c’est récupérer le slug de chaque article Éditions afin de le comparer à mon tag. Si ils sont identique je veux afficher les images mise en avant des articles lié à ce tag, si il n’y a pas d’article Éditions avec un slug identique au nom de mon tag il n’affiche rien. (J’espère avoir réussis à me faire comprendre, je vous joint un screen de ce que ça donne)

    Mon problème est donc que je ne vois pas comment récupérer le slug de chaque article. J’ai vu que l’attributs pour le slug c’est post_name.
    J’ai essayé :
    $my_posts->the_post()->post_name;
    $my_posts->post_name;
    $post = $my_posts->the_post()    et après     $post->post_name

    Aucun ne marche.

    J’ai beaucoup de mal à trouver de la doc claire sur le sujet.

    Voici mon code :

    <?php

    /**
    * Template Name: Page des catégories
    **/
    ?>

    <title>Les Éditions</title>
    <link rel="stylesheet" href="style.css">

    <body>
    <?php get_header(); ?>
    <h1>Les Éditions</h1>

    <?php
    /*
    * @my_posts => Get the articles with the category "les-editions".
    */
    $cat_name = "les-editions";
    $tag = "edition-du-15-mars-2022";

    $size_img_couverture = [462, 480];
    $size_img_start_up = [120, 110];
    $my_posts = new WP_Query(array('post_type' => 'post', 'posts_per_page' => '150', 'category_name' => $cat_name));
    $my_posts_tag = new WP_Query(array('post_type' => 'post', 'posts_per_page' => '150', 'tag' => $tag));
    ?>

    <div id="carte_Section">

    <?php
    if ($my_posts->have_posts()) :
    // Loops for print article one by one
    while ($my_posts->have_posts()) : $my_posts->the_post(); ?>
    <div class="carte">

    <div class="img_couverture">
    <?php the_post_thumbnail($size_img_couverture); ?>
    </div>

    <div class="title_carte">
    <?php the_title(); ?>
    </div>

    <?php if ($my_posts_tag->have_posts()) : ?>
    <div class="start-up_section">

    <?php while ($my_posts_tag->have_posts()) : $my_posts_tag->the_post(); ?>
    <!-- SI slug de l'edition est = au slug du tag afficher ca -->
    <div class="img_start-up">
    <?php the_post_thumbnail($size_img_start_up); ?>
    </div>

    <!-- SINON Rien afficher -->
    <?php endwhile; ?>
    </div>
    <?php endif; ?>
    </div>
    <?php endwhile; ?>

    <?php else : ?>
    <p>Aucun article n'a été trouvé.</p>
    <?php endif; ?>
    </div>
    <?php get_footer(); ?>
    Mon template archive catégorie

    • Ce sujet a été modifié le il y a 3 mois et 2 semaines par Macteaser.
    • Ce sujet a été modifié le il y a 3 mois et 2 semaines par Macteaser.
    Fichiers joints :
    Vous devez être connecté pour voir les fichiers joints.
    #2424673
    mathieu42
    Participant
    Maître WordPress
    1849 contributions

    déjà vous n’avez pas besoin de mettre de balise « body », elle est générée par « get_header ».

    et ensuite WP_Query modifie la variable globale $post donc vous ne pouvez pas utiliser 2 boucles imbriquées. essayez avec « get_posts » comme cela :

    <?php
    /**
    * Template Name: Page des catégories
    **/

    $cat_name = "les-editions";
    $tag = "edition-du-15-mars-2022";

    $size_img_couverture = [462, 480];
    $size_img_start_up = [120, 110];
    $articles_categorie = get_posts(array('post_type' => 'post', 'posts_per_page' => '150', 'category_name' => $cat_name));
    $articles_etiquette = get_posts(array('post_type' => 'post', 'posts_per_page' => '150', 'tag' => $tag));


    get_header();


    ?>
    <div id="carte_Section">

    <?php foreach ($articles_categorie as $article_categorie) {?>
    <div class="carte">

    <div class="img_couverture">
    <?php // $article_categorie ...?>
    </div>

    <div class="title_carte">
    <?php // $article_categorie ...?>
    </div>

    <?php if (0 < count($articles_etiquette)) {?>
    <div class="start-up_section">

    <?php foreach ($articles_etiquette as $article_etiquette) {?>

    <!-- SI slug de l'edition est = au slug du tag afficher ca -->

    <?php if ($article_etiquette->post_name === $article_categorie->post_name) {?>

    <div class="img_start-up">
    <?php // ?>
    </div>

    <?php }?>

    <?php }?>

    </div>
    <?php }?>
    </div>
    <?php }?>

    </div>
    <?php

    get_footer();

     

    #2424679
    Macteaser
    Participant
    Initié WordPress
    22 contributions

    Bonjour, Merci de ta réponse.

    Merci pour body je ne le savais pas.

    Concernant le slug, je viens de  réussir à faire marcher en ajoutant 4 ligne dans mon code et tout fonctionne (tester avec une seul valeur à voir de manière dynamique ce que ça donne) Je mets ma modification

    if ($my_posts->have_posts()) :
    // Loops for print article one by one
    while ($my_posts->have_posts()) : $my_posts->the_post(); ?>
    <div class="carte">
    <?php global $post;
    $post_slug = $post->post_name;
    echo $post_slug;
    ?>

    <div class="img_couverture">
    <?php the_post_thumbnail($size_img_couverture); ?>
    </div>

    <div class="title_carte">
    <?php the_title(); ?>
    </div>

    <?php if ($my_posts_tag->have_posts()) : ?>
    <?php if($post_slug === $tag) : ?>

    <div class="start-up_section">
    <?php while ($my_posts_tag->have_posts()) : $my_posts_tag->the_post(); ?>
    <!-- SI slug de l'edition est = au slug du tag afficher ca -->
    <div class="img_start-up">
    <?php the_post_thumbnail($size_img_start_up); ?>
    </div>

    <!-- SINON Rien afficher -->
    <?php endwhile; ?>
    </div>
    <?php endif; ?>
    <?php endif; ?>
    Les modif apporter

    Mais merci pour ton code qui à l’air beaucoup plus claire et du coup plus facile à maintenir.

    Je vais me penchez dessus pour l’adapter à ma page.

    Encore merci 🙂

     

     

     

3 sujets de 1 à 3 (sur un total de 3)
  • Vous devez être connecté pour répondre à ce sujet.