8797 sujets

Développement web côté serveur, CMS

Hello,

Je travaille avec wordpress et je recherche à faire une condition :

Si le tag "or" est coché pour cette article, alors affiche moi cette div (sinon affiche rien)
Si le tag "argent" est coché pour cette article, alors affiche moi cette div (sinon affiche rien)
etc...
j'ai environ 20 tags

Voici le codes que j'ai essayé de faire :
<div class="tag">
			<?php if (has_tag('or')); ?> <?php echo '<div class="or">Or</div>' ?> 
			<?php if (has_tag('diamant')); ?> <?php echo '<div class="diamant">Diamant</div>' ?> 
			<?php if (has_tag('argent')); ?> <?php echo '<div class="argent">Argent</div>' ?> 
			</div>


Le code me retourne toutes les valeurs, alors que dans l'admin wordpress, je n'ai coché que les tags Or et Diamant. Normalement argent ne devrait pas s'afficher.

Je dois mal mis prendre

Merci par avance pour votre aide
A +
et sans les ; à la fin des if ?

<?php 
if (has_tag('blabla')) { ?> 
   <div class="blabla">blabla</div>
<?php } 
if (has_tag('blabla2')) { ?>
   <div class='blabla2'>blabla2</div>
<?php } ?>


ou même si tu veux pas de mes {}

<?php if (has_tag('blabla')) ?>  <div class="blabla">blabla</div>
<?php if (has_tag('blabla2')) ?> <div class='blabla2'>blabla2</div>

Modifié par Lothindil (21 Jun 2012 - 15:26)
Lothindil a écrit :
et sans les ; à la fin des if ?

&lt;?php 
if (has_tag('blabla')) { ?&gt; 
   &lt;div class=&quot;blabla&quot;&gt;blabla&lt;/div&gt;
&lt;?php } 
if (has_tag('blabla2')) { ?&gt;
   &lt;div class='blabla2'&gt;blabla2&lt;/div&gt;
&lt;?php } ?&gt;


ou même si tu veux pas de mes {}

&lt;?php if (has_tag('blabla')) ?&gt;  &lt;div class=&quot;blabla&quot;&gt;blabla&lt;/div&gt;
&lt;?php if (has_tag('blabla2')) ?&gt; &lt;div class='blabla2'&gt;blabla2&lt;/div&gt;



Merci Lothindil,

La première solution marche, la seconde non.

Du coup j'ai fait comme cela :
<div class="tag">
			<?php 
                        if (has_tag('or')) { ?> <div class="or">Or</div>
                        <?php }
			if (has_tag('diamant')) { ?> <div class="diamant">Diamant</div>
			<?php } 
                        if (has_tag('argent')) { ?> <div class="argent">Argent</div>
                        <?php } ?>
	      </div>


J'ai 20 tags conditionner de la même manière, c'est va pas etre un peu lourd en temps de chargement de la requête ?
N'y a t'il pas une autre solution ?
Avec une boucle ?
$tags = array("or", "diamant", "argent", ...);
$count = count(tags);
foreach (tags as $tag) {
    if (has_tag($tag))
        echo '<div class="'.$tag'">'.ucfirst($tag).'</div>';
}
Ou quelque chose du style...