Rimuovere il testo [...] dai riassunti degli articoli

21 set 2014, 14:24:29
Visualizzazioni: 54.3K
Voti: 14

Uso un tema che ha un limite di caratteri per i riassunti degli articoli e mostra [...] alla fine del limite di caratteri.

Voglio rimuoverlo, quindi ho cercato the_excerpt(); e l'ho sostituito con the_content();

Il problema si risolve con i contenuti normali ma persiste con i post di tipo immagine e c'è <?php the_excerpt(); ?> che quando lo modifico fa comportare il riassunto come un post completo e non è correlato alla lunghezza del post.

Ho provato ad aprire tutti i file PHP del tema e cercare parole chiave come: limit, length, excerpt per trovare dove si trova il codice che definisce la lunghezza del riassunto, ho cercato persino "[...]" in tutti i file e nelle lingue ma non so da dove provenga.

Tutto quello che ho trovato sono alcune righe di codice in function.php

if ( ! function_exists( 'string_limit_words' ) ) :
function string_limit_words($str, $limit = 18 , $need_end = false) {
    $words = explode(' ', $str, ($limit + 1));
    if(count($words) > $limit) {
        array_pop($words);
        array_push($words,'...');
    }
    return implode(' ', $words);
}
endif;

E quando aumento 18 non cambia nulla!

Quale codice devo cercare?

0
Tutte le risposte alla domanda 6
5
28

Il codex è tuo amico e dovrebbe essere la tua prima tappa :-)

Il [...] viene aggiunto da the_excerpt(). Esiste un filtro chiamato excerpt_more che è specificamente incluso per personalizzare il testo "leggi di più" dopo l'estratto

Per rimuovere il [...] dopo il testo dell'estratto, puoi fare quanto segue

function new_excerpt_more( $more ) {
    return '';
}
add_filter('excerpt_more', 'new_excerpt_more');
21 set 2014 15:17:02
Commenti

grazie per la risposta

il tuo codice funziona bene per rimuovere [...], ma i post brevi sono ancora limitati e le parole vengono tagliate dopo un certo numero di caratteri

Vorrei che si comportasse normalmente (mostrando tutto ciò che c'è prima del tag read more nel mio post breve)

Arioman Arioman
21 set 2014 18:00:13

un'altra domanda solo per curiosità, come posso cambiare [...] con qualcos'altro ad esempio [ continua... ]

Arioman Arioman
21 set 2014 18:00:58

Dovresti leggere questo post. Ho coperto quasi tutto in quel post. Spero sia d'aiuto :-). Ricordati di accettare la mia risposta se ha risolto il tuo problema.

Pieter Goosen Pieter Goosen
21 set 2014 18:04:21

sembra che questo rimuova solo il link "leggi di più". I [...] sono ancora presenti.

Jules Jules
21 set 2017 11:02:24

Ottimo, funziona anche per il blocco Excerpt nel Query loop nell'editor Gutenberg.

Iggy Iggy
25 set 2022 03:20:42
0

Come altri hanno già sottolineato, utilizzare l'hook filter excerpt_more è la strada giusta da percorrere.

Volevo solo aggiungere che non è necessario scrivere una funzione che restituisca una stringa vuota. WordPress ha alcune funzioni integrate per restituire true, false, zero, null, stringa vuota o array vuoto.

In questo caso abbiamo bisogno di __return_empty_string()

Puoi aggiungere questo codice al tuo plugin o al file functions.php del tuo tema:

<?php 
// Questo aggiungerà un filtro su `excerpt_more` che restituisce una stringa vuota.
add_filter( 'excerpt_more', '__return_empty_string' ); 
?>
23 mar 2019 15:14:43
6

Dovresti aggiungere questo al tuo functions.php

    function custom_excerpt_more( $more ) {
    return '';//puoi modificare questo con quello che preferisci
}
add_filter( 'excerpt_more', 'custom_excerpt_more' );

Inoltre, usare the_excerpt ha il vantaggio di pulire automaticamente il contenuto, rimuovendo tutte le immagini e altri tag HTML.

Puoi leggere di più qui

Se vuoi anche modificare la lunghezza dell'estratto, puoi aggiungere questo snippet al tuo functions.php:

function custom_excerpt_length( $length ) {
    return 20;//modifica il numero con la lunghezza desiderata
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

Puoi leggere di più su questo qui

21 set 2014 15:15:58
Commenti

Quali versioni stai considerando, cioè pre 2.9 :-)

Pieter Goosen Pieter Goosen
21 set 2014 15:17:58

@PieterGoosen, immagino quella sbagliata.

Tomás Cot Tomás Cot
21 set 2014 15:20:14

il tuo codice funziona bene cambiando la lunghezza ma quando rimuovo [...] risulta brutto quando una parte del paragrafo sembra mancare

sarebbe fantastico se in qualche modo riuscisse a rilevare un paragrafo invece della lunghezza!!

// un altro problema con l'excerpt riguarda gli shortcode, non posso inserire un lettore video o una presentazione nei miei post brevi

Arioman Arioman
21 set 2014 18:14:24

@Arioman, puoi cambiare il [...] con un link che dice "Continua a leggere", o quello che preferisci. Ora, se vuoi avere shortcode funzionanti, the_excerpt non è quello che stai cercando, dovresti aggiungerlo alla domanda, poiché le risposte cambieranno.

Tomás Cot Tomás Cot
21 set 2014 18:26:12

@TomásCot grazie per questa fantastica guida. Ho inserito tutti i codici (codice completo) nel mio function.php e ho rimosso $wpse_excerpt = strip_tags($wpse_excerpt, wpse_allowedtags()); per accettare tutti i tag. Uso un lettore video in streaming per inserire video e genera shortcode come: [stream flv=http://***/clip/shad.m4v embed=false share=false width=640 height=360 dock=true controlbar=over bandwidth=high autostart=false responsive=16:9 /] ma ottengo ancora un testo: Video: il mio video invece di mostrare il mio lettore video nel post breve. Qual è il mio problema??

Arioman Arioman
22 set 2014 09:34:38

Puoi aggiungere il codice alla domanda?

Tomás Cot Tomás Cot
23 set 2014 02:18:46
Mostra i restanti 1 commenti
0

questo funziona per me!

function change_excerpt( $text )
{
    $pos = strrpos( $text, '[');
    if ($pos === false)
    {
        return $text;
    }

    return rtrim (substr($text, 0, $pos) );
}
add_filter('get_the_excerpt', 'change_excerpt');
21 feb 2017 07:29:41
0

'excerpt_more' è un hook di WordPress. Restituisce l'estratto del contenuto. Per rimuovere i [...] dopo il testo dell'estratto, puoi restituire una stringa vuota come nell'esempio seguente o personalizzarla secondo le tue esigenze. Usa questo codice nel file function.php

function custom_excerpt_more( $excerpt ) {
    return '';
}
add_filter( 'excerpt_more', 'custom_excerpt_more' );
13 giu 2019 12:00:35
0

Prova a creare una nuova funzione nel tuo file functions.php:

function custom_excerpt() {
 $text=preg_replace( "/\\[&hellip;\\]/",'inserisci qui ciò che vuoi sostituire',get_the_excerpt());
echo '<p>'.$text.'</p>';
}

Poi utilizza la nuova funzione nella tua pagina.

16 giu 2016 14:13:37