Problema cu [...] înlocuit de [&hellip] în WordPress
Am o problemă cu site-ul meu WordPress, în loc de [...] primesc [&hellip] peste tot. Am schimbat setarea de caractere la UTF-8 dar problema persistă. Orice ajutor ar fi apreciat.
Link către website: http://theappjuice.com/

Am fost extrem de frustrat de această problemă (și dezamăgit că OP nu ne-a spus cum a rezolvat-o, deși pe site-ul său se vede că a reușit... Poate doar a schimbat tema?).
Pentru ceea ce valorează, punctele de suspensie afișau corect la un moment dat. Dar, probabil o actualizare le-a stricat.
Rezumatul meu era afișat astfel:
echipamentul implicat [&hellip
iar sursa era randată astfel:
echipamentul implicat [&hellip</p>
în timp ce mă așteptam să fie afișat astfel:
echipamentul implicat ...
Am modificat și am încercat diverse lucruri în formatting.php și default-filters.php fără succes.
În final, am realizat că trebuie să fie legat de temă. Poate, poate nu, dar acolo am reușit în cele din urmă să o repar.
Am găsit această funcție în functions.php din tema mea:
// Elimină [...]
function trim_excerpt($text) {
return rtrim($text,'[...]');
}
Am actualizat-o la:
// Elimină [...]
function trim_excerpt($text) {
return $text;
}
Nu-mi doream cu adevărat parantezele în jurul punctelor de suspensie, așa că versiunea mea finală arată astfel:
// Elimină [...]
function trim_excerpt($text) {
$text = str_replace('[', '', $text);
$text = str_replace(']', '', $text);
return $text;
}
Acum rezumatul meu afișează corect punctele de suspensie, cel puțin așa cum doream eu să apară.
Sper că acest lucru îi va ajuta pe cei care întâmpină această problemă.

Pentru a clarifica de ce s-a întâmplat acest lucru, este din cauza faptului că notația rtrim( $text, '[...]' )
folosită pentru a elimina punctele de suspensie implicite în unele teme este incorectă.
Conform descrierii funcției trim()
, al doilea argument este tratat ca o listă de caractere, nu ca un șir de caractere. Mai mult, [...
este tratat ca un interval de caractere ASCII de la punct (codul 2E) până la paranteza pătrată deschisă (codul 5B). Astfel, în loc să elimine subșirul [...]
, codul în cauză elimină orice caracter care se încadrează în acel interval (inclusiv punct și virgulă, codul 3B), precum și paranteza pătrată închisă.
În WordPress 3.6, [...]
a fost înlocuit cu […]
pentru o mai bună tipografie.
Aceasta nu este o problemă în sine, însă rtrim( $text, '[...]' )
taie ultimele două caractere din acel șir, lăsând doar [&hellip
.
Soluția este să folosiți str_replace( '[…]', '', $text )
pentru WordPress 3.6+, sau str_replace( '[...]', '', $text )
pentru versiunile anterioare. De asemenea, puteți combina ambele înlocuiri dacă doriți: str_replace( array( '[…]', '[...]' ), '', $text )
.
