Problema cu [...] înlocuit de [&hellip] în WordPress

7 aug. 2013, 22:54:45
Vizualizări: 15.1K
Voturi: 0

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/

2
Comentarii

Încearcă să dezactivezi pluginurile. Dacă problema dispare, activează-le unul câte unul până când reapare. Acela va fi problema ta. (De asemenea: … este entitatea HTML pentru '…'. Ceva ar putea tăia caracterul punct și virgulă.)

Pat J Pat J
7 aug. 2013 23:04:43

Tocmai am aruncat o privire pe site-ul tău -- cum arată codul tău pentru The Loop? (Cauți ceva în fișierele PHP care începe cu while( have_posts() ) : și se termină cu endwhile;, cel mai probabil.) Dacă poți să-l copiezi în întrebarea ta, asta ar putea ajuta oamenii să diagnosticheze problema.

Pat J Pat J
7 aug. 2013 23:51:58
Toate răspunsurile la întrebare 3
0

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 [&#038;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ă.

16 aug. 2013 10:38:15
0

A făcut aproape același lucru, acesta a fost răspunsul pentru mine:

// Înlocuiește elipsis-ul implicit
function trim_excerpt($text) {
     $text = str_replace('[&hellip;]', '', $text);
     return $text;
    }
add_filter('get_the_excerpt', 'trim_excerpt');
13 sept. 2013 15:28:06
0

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 [&hellip;] 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( '[&hellip;]', '', $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( '[&hellip;]', '[...]' ), '', $text ).

10 apr. 2016 04:46:29