Problema con [...] che appare come […] in WordPress

7 ago 2013, 22:54:45
Visualizzazioni: 15.1K
Voti: 0

C'è un problema con il mio sito WordPress, invece di [...] ottengo […] ovunque. Ho cambiato il charset in UTF-8 ma il problema persiste. Qualsiasi aiuto sarebbe apprezzato.

Ecco il link al sito web: http://theappjuice.com/

2
Commenti

Prova a disabilitare i tuoi plugin. Se il problema scompare, riattivali uno alla volta finché non si ripresenta. Quello sarà il tuo problema. (Inoltre: … è l'entità HTML per '…'. Qualcosa potrebbe aver eliminato il punto e virgola.)

Pat J Pat J
7 ago 2013 23:04:43

Ho dato un'occhiata al tuo sito - com'è il tuo codice per The Loop? (Dovresti cercare qualcosa nei file PHP che inizia con while( have_posts() ) : e termina con endwhile;, molto probabilmente.) Se puoi incollarlo nella tua domanda, potrebbe aiutare le persone a diagnosticare il problema.

Pat J Pat J
7 ago 2013 23:51:58
Tutte le risposte alla domanda 3
0

Ero estremamente frustrato da questo problema (e deluso dal fatto che l'autore originale non ci abbia rivelato come lo ha risolto, dato che vedo sul suo sito che ci è riuscito... Forse ha semplicemente cambiato tema?).

Per la cronaca, i puntini di sospensione un tempo venivano visualizzati correttamente. Ma qualche aggiornamento deve averli rovinati.

I miei estratti venivano visualizzati così:

    the equipment involved [&hellip

e il sorgente veniva renderizzato così:

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

mentre mi aspettavo che fossero visualizzati in questo modo:

    the equipment involved ...

Ho modificato e giocato con formatting.php e default-filters.php senza successo.

Alla fine, ho capito che doveva essere legato al tema. Forse sì, forse no, ma è lì che sono riuscito a risolverlo definitivamente.

Ho trovato questa funzione nel functions.php del mio tema:

    // Rimuove [...]
    function trim_excerpt($text) {
     return rtrim($text,'[...]');
    }

L'ho aggiornata in:

    // Rimuove [...]
    function trim_excerpt($text) {
     return $text;
    }

In realtà non volevo le parentesi quadre attorno ai puntini di sospensione, quindi la mia versione finale è questa:

    // Rimuove [...]
    function trim_excerpt($text) {
     $text = str_replace('[', '', $text);
     $text = str_replace(']', '', $text);
     return $text;
    }

Ora i miei estratti visualizzano correttamente i puntini di sospensione, almeno nel modo in cui volevo che fossero visualizzati.

Spero che questo possa aiutare chiunque incontri questo problema.

16 ago 2013 10:38:15
0

Ho fatto quasi la stessa cosa, questa è stata la soluzione che ha funzionato per me:

// Sostituisce i puntini di sospensione predefiniti
function trim_excerpt($text) {
     $text = str_replace('[&hellip;]', '', $text);
     return $text;
    }
add_filter('get_the_excerpt', 'trim_excerpt');
13 set 2013 15:28:06
0

Per chiarire perché è accaduto, è perché la notazione rtrim( $text, '[...]' ) utilizzata per rimuovere i puntini di sospensione predefiniti in alcuni temi è errata.

Secondo la descrizione della funzione trim(), il secondo argomento viene trattato come un elenco di caratteri, non come una stringa. Inoltre, [... viene interpretato come un intervallo di caratteri ASCII dal punto (codice 2E) alla parentesi quadra aperta (codice 5B). Quindi, invece della sottostringa [...], il codice in questione rimuove qualsiasi carattere che rientri in quell'intervallo (incluso il punto e virgola, codice 3B), oltre alla parentesi quadra chiusa.

In WordPress 3.6, [...] è stato cambiato in [&hellip;] per una migliore tipografia.

Non è un problema di per sé, tuttavia rtrim( $text, '[...]' ) taglia gli ultimi due caratteri di quella stringa, lasciando solo [&hellip.

La soluzione è usare str_replace( '[&hellip;]', '', $text ) per WordPress 3.6+, oppure str_replace( '[...]', '', $text ) per le versioni precedenti. Puoi anche combinare entrambe le sostituzioni se lo desideri: str_replace( array( '[&hellip;]', '[...]' ), '', $text ).

10 apr 2016 04:46:29