Condition ne marche pas avec un titre wordpress

sia - 6 mars 2014 à 11:33
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 8 mars 2014 à 04:20
Bonjour,
voilà mon soucis j ai fais une condition qui récupère le titre d'une page et en fonction j'affiche un contenu. Ça ne marchait pas alors j'ai changé ma condition pour voir si le titre était bien égal ou non au titre dans ma condition, et il se trouve qu'il est bien égal, et je ne sais pas d'où vient le problème. CA me le fait seulement avec Education à l'image qui est aussi une catégorie contenant des sous-catégories


<?php if(get_the_title()!="Education à l'image"):echo get_the_title(); echo "Education à l'image";?>

<?php
$cat=get_the_title();$c=0;
?>
<?php $subcats = get_categories('hierarchical=1&child_of='.get_category_by_slug("$cat")->term_id);
foreach ($subcats as $subcat): if($c!=3):?>

<div class="single_bande">
<div class="les_titres_bandes box2">
<a class="h1_<?php echo $nb;?>" href="#"><h1><?php echo $subcat->cat_name; ?></h1><a>
</div>
<div class="imgs_bandes">
<div><img src="adresse_de_l_image" alt="img" /></div>
<div><img src="adresse_de_l_image" alt="img" /></div>
<div><img src="adresse_de_l_image" alt="img" /></div>
</div>
</div>
<div class="texte_bande bloc_<?php echo $nb;?>">
<p>texte de présentation</p>
</div>
<?php $c++;$nb++;?>
<?php endif;endforeach; ?>
<?php endif;?>

Pouvez vous m'aider ? merci !

2 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
6 mars 2014 à 13:49
Bonjour,

A mon avis.. c'est du à l'apostrophe ...
Tu peux essayer d'utiliser du UTF8_Encode ou en échappant l'apostrophe => "Education à l\'image"

0
frodonsia Messages postés 7 Date d'inscription jeudi 6 mars 2014 Statut Membre Dernière intervention 7 mars 2014
6 mars 2014 à 15:03
mais ça ne marche pas , les echo m'affichent bien Education à l'image
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
6 mars 2014 à 15:13
Tu as essayé en encodant un utf8 ?
0
frodonsia Messages postés 7 Date d'inscription jeudi 6 mars 2014 Statut Membre Dernière intervention 7 mars 2014
Modifié par frodonsia le 6/03/2014 à 16:33
oui mais non plus :/
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
6 mars 2014 à 17:17
Tu as encodé QUOI en UTF8 : Le tilte ET ton texte ?
Lorsque tu as Échappé tes apostrophes.. tu l'as fait dans le Title ET dans ton texte ?

Au cas où utilises ceci et reteste :
$str = "Education à l'image";
$x=htmlentities($str, ENT_QUOTES , "UTF-8");

-> compare la valeur de ton get_title avec la chaine encodée.
Si ça ne fonctionne toujours pas.. essayes d'encoder aussi ton title
0
frodonsia Messages postés 7 Date d'inscription jeudi 6 mars 2014 Statut Membre Dernière intervention 7 mars 2014
6 mars 2014 à 18:26
ok j essaye merci :)
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
Modifié par jordane45 le 7/03/2014 à 02:32
C'est bizarre ton truc...
Faudrait savoir comment ta fonction get_title() te donne le résultat...

On peut aussi tester avec la fonction : strcmp (si les deux chaines sont identiques il retourne 0 )

J'ai inséré aussi un TRIM pour supprimer les caractères invisibles qui pourraient se trouver en debut/fin de tes chaines de caractères.
J'ai aussi ajouté un strlen pour savoir si la longueur de tes chaines sont identiques ou non..

$str =;
  $t=trim(htmlentities(get_the_title(), ENT_QUOTES , "UTF-8"));
  $x=trim(htmlentities( "Education à l'image", ENT_QUOTES , "UTF-8"));


if (strlen($x)==strlen($t)){
    if(strcmp($t,$x )==0){
         echo "Valeurs identiques";
   }else{
     echo "Valeurs différentes ...";
         echo "  x-> ".$x;
         echo "  t -> ".$t;
   }
}else{
  echo "Les chaines sont de tailles différentes";
  echo "  X -> ".strlen($x);
  echo "  T -> ".strlen($t);
}
  ?>


Avec tout ça... si ça ne fonctionne toujours pas... là je ne comprend pas...



Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
0
frodonsia Messages postés 7 Date d'inscription jeudi 6 mars 2014 Statut Membre Dernière intervention 7 mars 2014
7 mars 2014 à 11:12
j essaye merci encore
0
Rejoignez-nous