- WordPress :5.8
- Statut : résolu
- Ce sujet contient 2 réponses, 2 participants et a été mis à jour pour la dernière fois par
Macteaser, le il y a 3 mois et 2 semaines.
-
AuteurMessages
-
13 octobre 2022 à 14 h 01 min #2424665
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_nameAucun 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.13 octobre 2022 à 14 h 54 min #2424673dé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();13 octobre 2022 à 15 h 22 min #2424679Bonjour, 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 apporterMais 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 🙂
-
Ce sujet a été modifié le il y a 3 mois et 2 semaines par
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.