wake-up-neo.com

WP_Query-Schleife, zeigt Sonderzeichen im Titel nicht korrekt an

Ich habe ein Problem mit einer WP_query-Schleife (vollständiger Code unten).

Immer wenn ich echo $post->post_title gerade starte, druckt es den Titel einfach schön aus.

Wenn ich jedoch versuche, Folgendes zu tun: echo substr($post->post_title,0,1), können keine Sonderzeichen wie ø æ å angezeigt werden. Es ist, als würdedas Sonderzeichen in zwei Teile teilen - was zum?

Ich sage, es teilt es auf, weil, wenn ich versuche, echo substr($post->post_title,0,2) auszuführen (2 Zeichen auszudrucken), es das Zeichen korrekt druckt, aber nur eines druckt.

Hier ist mein vollständiger Code für die Schleife:

<?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>";
} 

Wie behebe ich diese Schleife, damit ich nur einen Buchstaben (unabhängig davon, welcher) korrekt als Überschrift über dem aufgelisteten Inhalt anzeigen kann?

1
Martin

Haben Sie versucht, mb_substr () durch mb_substr zu ersetzen

$current_letter = strtoupper(mb_substr($post->post_title,0,1));
1
Adeel Abbas

Dies ist ein allgemeines PHP Problem und kein WP Problem.

Insbesondere handelt es sich bei diesen Zeichen um Multibyte-Zeichen. Wenn Sie das erste Zeichen mit substr erfassen, wird es in zwei Hälften geteilt

Versuchen Sie stattdessen, mb_substr zu verwenden.

1
Tom J Nowell