Проблема с отображением […] вместо [...] в WordPress

7 авг. 2013 г., 22:54:45
Просмотры: 15.1K
Голосов: 0

У меня возникла проблема с моим сайтом на WordPress - вместо [...] везде отображается [&hellip]. Я изменил кодировку на UTF-8, но проблема осталась. Буду благодарен за любую помощь.

Вот ссылка на сайт: http://theappjuice.com/

2
Комментарии

Попробуйте отключить ваши плагины. Если проблема исчезнет, включайте их по одному, пока она не появится снова. Это поможет выявить проблемный плагин. (Также: … — это HTML-сущность для символа '…'. Возможно, что-то обрезает точку с запятой.)

Pat J Pat J
7 авг. 2013 г. 23:04:43

Только что посмотрел ваш сайт — как выглядит ваш код для The Loop? (Скорее всего, вам нужно найти в PHP-файлах конструкцию, начинающуюся с while( have_posts() ) : и заканчивающуюся endwhile;.) Если вы сможете вставить этот код в свой вопрос, это может помочь в диагностике проблемы.

Pat J Pat J
7 авг. 2013 г. 23:51:58
Все ответы на вопрос 3
0

Я был крайне раздражён этой проблемой (и разочарован, что автор темы не поделился решением, хотя видно, что на его сайте всё исправлено... Может, он просто сменил тему?).

Кстати, многоточия раньше отображались правильно. Но какое-то обновление, видимо, сломало их.

Мои цитаты выглядели так:

    the equipment involved [&hellip

А исходный код отображался так:

    the equipment involved [&#038;hellip</p>

Хотя я ожидал увидеть их в таком виде:

    the equipment involved ...

Я экспериментировал с formatting.php и default-filters.php, но безрезультатно.

В итоге я предположил, что проблема связана с темой. Может, да, может, нет, но именно там мне удалось её исправить.

Я обнаружил эту функцию в functions.php своей темы:

    // Удаление [...]
    function trim_excerpt($text) {
     return rtrim($text,'[...]');
    }

Я обновил её до:

    // Удаление [...]
    function trim_excerpt($text) {
     return $text;
    }

Мне не очень хотелось видеть скобки вокруг многоточия, поэтому финальная версия выглядит так:

    // Удаление [...]
    function trim_excerpt($text) {
     $text = str_replace('[', '', $text);
     $text = str_replace(']', '', $text);
     return $text;
    }

Теперь мои цитаты корректно отображают многоточие, по крайней мере, так, как я хотел.

Надеюсь, это поможет тем, кто столкнулся с такой же проблемой.

16 авг. 2013 г. 10:38:15
0

Сделал практически то же самое, вот что сработало у меня:

// Заменяем стандартное многоточие
function trim_excerpt($text) {
     $text = str_replace('[&hellip;]', '', $text);
     return $text;
    }
add_filter('get_the_excerpt', 'trim_excerpt');
13 сент. 2013 г. 15:28:06
0

Чтобы прояснить, почему это произошло, дело в том, что запись rtrim( $text, '[...]' ), используемая для удаления стандартного многоточия в некоторых темах, некорректна.

Согласно описанию функции trim(), второй аргумент рассматривается как список символов, а не как строка. Более того, [... интерпретируется как диапазон символов ASCII от точки (код 2E) до открывающей квадратной скобки (код 5B). Таким образом, вместо подстроки [...] данный код удаляет любой символ, попадающий в этот диапазон (включая точку с запятой, код 3B), а также закрывающую квадратную скобку.

В WordPress 3.6 [...] был заменён на [&hellip;] для лучшей типографики.

Это не является проблемой само по себе, однако rtrim( $text, '[...]' ) обрезает последние два символа этой строки, оставляя только [&hellip.

Решение состоит в использовании str_replace( '[&hellip;]', '', $text ) для WordPress 3.6+ или str_replace( '[...]', '', $text ) для более ранних версий. Также можно объединить оба варианта замены: str_replace( array( '[&hellip;]', '[...]' ), '', $text ).

10 апр. 2016 г. 04:46:29