Кажется, что вы используете UTF-8 (если вы просматриваете исходный код, вы видите & osl или то же самое , которое появляется в выводе html? Если это последний, то вы используете utf-8 (что, кстати, что я всегда рекомендую, так что совсем не плохо).
Проблема с utf-8 заключается в том, что это многобайтовая кодировка, что означает, что некоторые буквы используют более 1 байта. PHP-функции, работающие со строками, такие как substr()
(то есть функции, которые получают фрагмент большей строки, в данном случае отрывок из полного текста статьи), считают, что 1 символ = 1 байт, поэтому substr работает в уровень байтов, а не уровень символов.
Я не знаю wordpress и не знаю, как работает механизм выдержки, поэтому я не буду предлагать вам никакого решения (у меня есть несколько идей, но, возможно, не самое лучшее, и если вы не знаете PHP, то они только смущаю вас).
Проверьте Google на wordpress excerpt utf-8 substr
или его разновидности.