Wordpress. Некоректний вывод символов "-" и "&" из заголовков статьи

Идея такая стоит, что каждый 1 символ слова после пробела надо красить в другой цвет.

К примеру должно быть вот так: "JETPEEL™ MEDICAL AESTHETIC % $ # - &" Заголовки могут содержать в себе разные символы, по этому я в 1 строку для примера их поместил.

Это пример уже после слов имеет символы какие "-" и "&" выводятся не корректно на front-end сайта, а именно вот так "&#8211 ;" и "&#038 ;" это два символа "-" и "&" я пробел перед ";" поставил чтоб наглядно было видно что получаю.

Вот мой код:

 $str = get_the_title();
        $array = explode(' ', $str);

        foreach ($array as $k => $value): 
            
            print('<span>' . substr($value, 0, 1) . "</span>" . substr($value, 1) . " ");     

         endforeach;

Если сделать var_dump($array) переменой то выходит нормальный массив где каждое слово/символ уже по пробелам разбито.

ARRAY ( [0] => JETPEEL™ [1] => MEDICAL [2] => AESTHETIC [3] => % [4] => $ [5] => # [6] => – [7] => & )

Тот самый код если заменить получение заголовка статьи get_the_title() на строку сразу "JETPEEL™ MEDICAL AESTHETIC % $ # - &" то код все отображает и выводит коректно.

 $str =  "JETPEEL™ MEDICAL AESTHETIC % $ # - &"  //get_the_title();
            $array = explode(' ', $str);
    
            foreach ($array as $k => $value): 
                
                print('<span>' . substr($value, 0, 1) . "</span>" . substr($value, 1) . " ");     
    
             endforeach;

Я в тупике почему получение заголовков с такими символами выводит не коректно.


Ответы (2 шт):

Автор решения: KodimWeb

get_the_title() рекомендуется очищать перед выводом на экран, потому что она выводит все HTML теги как есть. Попробуйте использовать

    echo esc_html( get_the_title() );
→ Ссылка
Автор решения: KAGG Design

Используйте html_entity_decode()

print( html_entity_decode( '<span>' . substr($value, 0, 1) . "</span>" . substr($value, 1) . " " ) );  
→ Ссылка