J'ai un problème avec une boucle WP_query
(code complet ci-dessous).
Chaque fois que je lance juste echo $post->post_title
, le titre est bien imprimé.
Mais si j'essaie de faire quelque chose comme ce qui suit: echo substr($post->post_title,0,1)
, il ne peut pas afficher de caractères spéciaux tels que ø æ å
. C'est comme si il divise le caractère spécial en deux - qu'est-ce que?
Je dis que cela sépare parce que, si j'essaie d'exécuter echo substr($post->post_title,0,2)
(imprimer 2 caractères), il imprime le caractère correctement, mais n'en imprime qu'un.
Voici mon code complet pour la boucle:
<?php
$args = array(
'orderby' => 'post_title',
'order' => 'ASC',
'post_type' => 'ord',
'posts_per_page' => -1
);
$loop = new WP_query($args);
$mainArray = array_chunk($loop->posts, ceil(count($loop->posts) / 4)); // Array af arrays
foreach ($mainArray as $array) {
$first_letter = '';
echo "<div class='col ordbog-column'>";
foreach($array as $post) {
$current_letter = strtoupper(substr($post->post_title,0,1));
if($current_letter != $first_letter) {
echo "<h3 class='letter' id='letter_$current_letter'>$current_letter</h3>";
$first_letter = $current_letter;
}
$html = '<a href="'.get_permalink().'" class="ord">'.get_the_title().'</a><br/>';
echo $html;
}
echo "</div>";
}
Comment corriger cette boucle afin de pouvoir afficher correctement une seule lettre (peu importe la lettre) en tant que titre sur le contenu répertorié?
Avez-vous essayé mb_substr (), remplacez la fonction substr par mb_substr
$current_letter = strtoupper(mb_substr($post->post_title,0,1));
Il s'agit d'un problème général PHP plutôt que d'un problème WP.
Plus précisément, ces caractères sont des caractères multi-octets, et le premier caractère saisi par substr
le coupe en deux
Essayez plutôt d'utiliser mb_substr